访问Jenkins v2.73.1时获取404 crumbIssuer REST API

时间:2017-10-10 05:55:58

标签: jenkins jenkins-api

我尝试调用Jenkins crumIssuer API但得到以下错误。 使用Jenkins版本2.19.1而不使用版本2.73.1

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 404 Not Found</title>
</head>
<body><h2>HTTP ERROR 404</h2>
<p>Problem accessing /crumbIssuer/api/json. Reason:
<pre>    Not Found</pre></p><hr><a href="http://eclipse.org/jetty">Powered by Jetty:// 9.4.z-SNAPSHOT</a><hr/>

</body>
</html>

2 个答案:

答案 0 :(得分:5)

您必须在Manage Jenkins下启用Prevent Cross Site Request Forgery exploits选项 - &gt;配置全局安全性。

答案 1 :(得分:1)

Rob Hales&#39;答案是对的。

尝试针对jenkins(版本2.89.3)实例运行以下Ansible代码时遇到了同样的问题。

- name: "Get csrf token"
  uri:
    url: 'http://127.0.0.1:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)'
    user: "{{ jenkins_admin_user }}"
    password: "{{ jenkins_admin_pass }}"
    force_basic_auth: yes
    return_content: yes

对我来说,在使用以下内容创建文件/var/jenkins_home/init.groovy.d/csrf.groovy重新启动jenkins 后,问题得以解决:

import hudson.security.csrf.DefaultCrumbIssuer
import jenkins.model.Jenkins

def instance = Jenkins.instance
instance.setCrumbIssuer(new DefaultCrumbIssuer(true))
instance.save()

有关详细信息,请参阅https://wiki.jenkins.io/display/JENKINS/CSRF+Protection