Javascript 如何通过JSON/JS在Jenkins中为CSRF添加crump
我想在Jenkins通过API创造就业机会,但我无法连接到Jenkins的CSRF保护。我得到了一个面包屑,但idk知道如何将其附加到JSON或JavaScript中的url/请求以通过POST方法获得数据。有什么想法吗?我只想用JS,不用JAVA。谢谢,这应该很简单。为了通过詹金斯的CSRF,您几乎不需要做什么 #1 获取一个有效的实际CSRF碎屑,您应该使用“/crumbisuer”端点。好的,这是一个受保护的端点,因此您应该在请求中使用API令牌或凭据对其进行身份验证调用。在这里,我将如何在JavaScript中实现这一点:Javascript 如何通过JSON/JS在Jenkins中为CSRF添加crump,javascript,json,jenkins,csrf-protection,Javascript,Json,Jenkins,Csrf Protection,我想在Jenkins通过API创造就业机会,但我无法连接到Jenkins的CSRF保护。我得到了一个面包屑,但idk知道如何将其附加到JSON或JavaScript中的url/请求以通过POST方法获得数据。有什么想法吗?我只想用JS,不用JAVA。谢谢,这应该很简单。为了通过詹金斯的CSRF,您几乎不需要做什么 #1 获取一个有效的实际CSRF碎屑,您应该使用“/crumbisuer”端点。好的,这是一个受保护的端点,因此您应该在请求中使用API令牌或凭据对其进行身份验证调用。在这里,我将如何
// **** - is a placeholder for an auth token, replace it with yours
$.get({
url: "https://my.jenkins.io/crumbIssuer/api/json",
contentType: "application/json",
headers: {
"User-Agent": "my_js_script",
"Authorization": "****"
}
}).done(function(data) {
// this is how you fetch valid & actual CSRF crumb
console.log(data.crumbRequestField + " = " + data.crumb);
});
#2
现在,既然您已经获得了一个有效且实际的CSRF碎屑的句柄,那么请将它与任何修改Jenkins中状态的请求一起发送。比如说,您的有效CSRF crump JSON如下所示:
{ "crumbRequestField": "Jenkins-Crumb", "crumb": "noop" }
因此,您的Ajax调用看起来有点像这样(注意一个额外的“Jenkins Crump”HTTP头):
这些JavaScript片段不太可能完美,但希望能为您提供正确的方向
我正在做一个项目,它是Jenkins API库,但使用Ruby。以下是一些文件,如果您需要阅读一些真正实现您所寻找的功能的源代码,可能会感兴趣:
- (见“碎屑法”)
- (参见“激活作业”方法)
请求标头字段,飞行前响应中的访问控制允许标头不允许Jenkins Crumb。
有什么想法吗?我发现问题是中间的代理不允许标头
// **** - is a placeholder for an auth token, replace it with yours
// simply activates a job in Jenkins, requirement for cloned jobs (aka. "Create-A-Copy-From")
$.post({
url: "https://my.jenkins.io/job/my_job/description",
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
headers: {
"User-Agent": "my_js_script",
"Authorization": "****",
"Jenkins-Crumb": "noop" // makes CSRF filter in Jenkins happy
},
data: "description="
});