【问题标题】:Jenkins giving 403 in EC2 Server after passing the crumb in the request headersJenkins 在请求标头中传递 crumb 后在 EC2 服务器中给出 403
【发布时间】:2020-07-27 01:35:41
【问题描述】:

我在 API 调用中使用 CSRF Jenkins crumbs 从 Java 在 Jenkins 中创建新作业。

我尝试了以下

调用 API 获取 crumb 数据

http://admin:11542c80972c3a2b863453d234de68b1d@10.139.163.33/crumbIssuer/api/json

我也尝试了以下网址

http://10.139.163.33/crumbIssuer/api/json

以下是从服务器获取的JSON响应

{"_class":"hudson.security.csrf.DefaultCrumbIssuer","crumb":"b272a09b604e7b7cc8ee1431f0a0143fa1422db2fb5f92955b0356a31da37463","crumbRequestField":"Jenkins-Crumb"}

在下一步中,我正在调用 Jenkins 以创建一个标题为的新作业

Jenkins-Crumb:b272a09b604e7b7cc8ee1431f0a0143fa1422db2fb5f92955b0356a31da37463

Jenkins 给了我 403,我正在使用 HttpGet 获取令牌并使用带有上述标头的 HttpPost 并发送给 jenkins。

当我尝试使用邮递员时,它没有给出这个错误。我在 1 台 ec2 服务器上运行 Java 应用程序,而 jenkins 在另一台 ec2 服务器上运行。

没有代理,我也尝试使用各种选项,如启用代理兼容性、重新启动 jenkins 等,但不起作用。

请指点。

使用的Java代码是

HttpPost postRequest = new HttpPost(url);
    JenkinsCrumb crumb = jenkinsHelper.getCrumb();
    String encodedPassword = Base64.getEncoder().encodeToString((user + ":" + pwd).getBytes());
    postRequest.addHeader(HttpHeaders.AUTHORIZATION, "Basic " + encodedPassword);
    postRequest.addHeader(new BasicHeader(crumb.getCrumbRequestField(), crumb.getCrumb()));
    return postRequest;

获取面包屑的代码是

String urlWithToken = "http://" + (user + ":" + pwd) + "@";
                HttpGet request = new HttpGet(jenkinsBaseUrl.replace("http://", urlWithToken) + "crumbIssuer/api/json");
                request.addHeader(HttpHeaders.AUTHORIZATION, "Basic " + encodedPassword);
                CloseableHttpResponse httpResponse = httpClient.execute(request);

我也尝试过使用 CURL 命令,但仍然得到相同的响应

【问题讨论】:

    标签: java jenkins java-8


    【解决方案1】:

    我能够通过对 CRUMB 和 POST 请求使用相同的 HttpClient (CloseableHttpClient) 来解决此问题。早些时候,我使用了 2 个单独的客户端,一个用于获取面包屑,另一个用于发布数据。为这两者使用共享的 httpclient 会导致成功状态。

    希望这可以帮助任何其他面临类似问题的开发人员。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      • 2015-06-09
      • 1970-01-01
      • 2016-04-21
      相关资源
      最近更新 更多