标签搜索

目 录CONTENT

文章目录

通过Jenkins Rest Api构建工程出现403错误的解决办法

沙漠渔
2022-10-21 09:11:27 / 0 评论 / 0 点赞 / 868 阅读 / 946 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-10-21,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

问题情况

因工作需要,自己开发的工程需要通过rest-api的方式调用Jenkins,集成Jenkins实现任务调度、任务查询、结果获取等,之前部署的Jenkins都是正常的,最近重新通过Docker安装部署了一个Jenkins容器,发现调用的时候提示403错误

调用过程示例代码如下:

try {
   JenkinsServer jenkins = new JenkinsServer(new URI("JENKINS_URL"), JENKINS_USERNAME, JENKINS_PASSWORD);
   if (jenkins.isRunning()) {
	   jenkins.getJob(JENKINS_JOB).build();
	   System.out.println(jenkins.getJob(JENKINS_JOB).getLastBuild().details().getResult());
   }
} catch (Exception e) {
   e.printStackTrace();
}

执行结果如下:

status code: 403, reason phrase: Forbidden

问题解决

发现了是Jenkins的CSRF机制导致的,自己新安装的Jenkins是最新版的,默认不支持关闭CSRF,所以需要在jenkins 控制台中手动关闭CSRF。解决方案为在jenkins控制台中执行以下代码。

// 允许禁用
hudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION = true

// 强制启用
hudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION = false

扩展阅读:
CSRF是Cross-Site Request Forgery缩写,是一种常见的来自于终端用户的攻击,主要是对其未被授权的web应用权限进行不被期望的动作执行。具体见后面的文章

0
广告 广告

评论区