首页 > 解决方案 > 詹金斯“错误 403 请求中没有包含有效的碎屑”

问题描述

我正在尝试使用以下命令通过来自我的 Windows 计算机的发布请求触发 Jenkins 构建。

首先,我使用...获得面包屑

curl http://JENKINS-URL/crumbIssuer/api/xml?xpath=//crumb

回应是这样的……

<crumb>string-of-digits<\crumb>

然后我使用命令

curl -u USERNAME:PASSWORD -X POST -H "Jenkins-Crumb:string-of-digits" http://JENKINS-URL/job/my-job/buildWithParameters?token=my-token

用户名正确,密码正确,crumb 正是我从第一个命令中得到的数字字符串(开头的 crumb> 和结尾的 <\crumb> 之间的所有内容),令牌与我的令牌匹配已在 Jenkins 中指定。但是,我仍然得到了回应

Error 403 No valid crumb was included in the request

在 Configure Global Security -> CSRF Protection 中,我还检查了“启用代理兼容性”并使用“默认 Crumb Issuer”。

看起来我在这里遗漏了什么吗?忘记任何步骤?命令格式不正确?还有什么你能想到的吗?

我已经按照这些步骤格式化了我的命令,就像这里的解决方案一样,但仍然没有运气..

https://linuxacademy.com/community/posts/show/topic/28964-no-valid-crumb-was-included-in-the-request

除此之外,我还尝试从第一个请求中保存 cookie 以获取 crumb,然后将保存 cookie 的文件传递到第二个 curl 命令中,该命令见下文。我仍然得到 403 No valid crumb ......

以下是使用 cookie 的命令...

wget --keep-session-cookies --save-cookies cookies.txt --auth-no-challenge --user admin --password my_password -q --output-document - http://JENKINS-URL/crumbIssuer/api/xml?xpath=//crumb

curl --cookie cookies.txt -u admin:my_password -H "JenkinsCrumb: string-of-digits-from-stdout" -X POST http://JENKINS-URL/job/my-job/buildWithParameters?token=my-token


标签: jenkinscurlbitbucket

解决方案


我终于找到了答案。我以为我可以指定我的实际帐户密码,但事实证明我需要使用 API 令牌进行身份验证。在上述带有 cookie 的命令上使用 API 令牌而不是我的密码允许我远程触发我的构建。


推荐阅读