jenkins - 请澄清:带有 CSRF 的 Jenkins REST API 需要用户:PASSWORD 的碎屑,而不是用户:API_TOKEN?
问题描述
我发现启用 CSRF 保护后,我可以发出带有 crumbs 标头的发布请求并使用username:PASSWORD
基本身份验证标头:
String basic = "<username>:<PASSWORD>";
HttpURLConnection c = (HttpURLConnection) new URL("https://host.com/jenkins/quietDown").openConnection();
c.setInstanceFollowRedirects(false);
c.setRequestMethod("POST");
c.addRequestProperty("Jenkins-Crumb", "<CRUMB>");
c.addRequestProperty("Authorization", "Basic " + Base64.getEncoder().encodeToString(basic.getBytes()));
c.getInputStream().close();
或username:APITOKEN
用于基本身份验证标头,在这种情况下不需要 crumbs 标头:
String basic = "<username>:<APITOKEN>";
HttpURLConnection c = (HttpURLConnection) new URL("https://host.com/jenkins/quietDown").openConnection();
c.setInstanceFollowRedirects(false);
c.setRequestMethod("POST");
c.addRequestProperty("Authorization", "Basic " + Base64.getEncoder().encodeToString(basic.getBytes()));
c.getInputStream().close();
问题:
- 这是预期用途(用户名:APITOKEN 没有 crumbs 标题)吗?文档和现有的 SO 答案含糊不清。
使用 Jenkins 2.164.3 和 Java 8。
解决方案
推荐阅读
- amazon-web-services - 在私有子网中设置 Redash 实例。EC2 状态检查失败
- qr-code - 我可以制作一个包含用户信息的二维码生成器应用程序吗?
- google-bigquery - 在 BigQuery 中按 DATETIME 排名
- java - 单击复选框后,如何使 JTable 上的复选框不可编辑?
- python - 使用字符串列表过滤数据框
- python - 在 Python 中将具有多列的 Dataframe 转换为 Dictionary
- flutter - 如何在 Flutter 中传递字符串参数?
- java - BeanValidation 错误 - 在类路径上找不到 JSR 303 Bean 验证实现
- python - x 轴刻度作为日期
- python - Python——网络抓取——“TypeError:‘NoneType’对象不可调用”