jenkins - 詹金斯“错误 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
解决方案
我终于找到了答案。我以为我可以指定我的实际帐户密码,但事实证明我需要使用 API 令牌进行身份验证。在上述带有 cookie 的命令上使用 API 令牌而不是我的密码允许我远程触发我的构建。
推荐阅读
- javascript - 基于表单条目值的对象和数组结构
- binary-search-tree - 二叉搜索树 - 删除调用堆栈和流程?
- gitlab - 您如何强制作业提示用户输入并行管道中的变量?
- c - C 浮点异常处理
- julia - 在 Julia Flux 中,我不断收到错误 LoadError: Mutating arrays is not supported,但我看不到我在哪里改变数组
- xcode - 从 macOS 为 Windows 交叉编译?- i686-w64-mingw32-ld:错误:无法消除歧义:-search_paths_first(您的意思是 --search_paths_first 吗?)
- javascript - jQuery 和 HTML 中的 if 语句?
- javascript - 为什么 Nest.js 声称是“进步的”?
- typescript - 等待 observable 为变量赋值,然后再尝试对其进行操作
- c++ - 测量某些函数调用所花费的时间