我正在使用Curl向Jenkins API发出请求-这是通过https完成的。Jenkins是使用Jenkins建议的反向代理在IIS中设置的。Jenkins站点具有windows身份验证。我需要在我的请求中传递一个Crumb - 403错误。
但是,当我请求Crumb时,它说明我需要提供Crumb?我需要通过命令提示符/批处理文件来执行此操作。
谢谢
发布于 2020-04-05 21:45:39
为了能够对Jenkins进行API调用,您需要在Jenkins中为给定用户生成一个令牌。例如,让我们使用用户Foo执行此操作。您需要使用Foo user登录,然后在web UI中登录:Foo (right upper corner) > Configure > API token > Add new token。
将令牌保存在某个位置后,可以使用以下命令检索breadcrumb:
curl --user Foo:<token> 'https://www.mysuperduperjenkins.com/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)'
这基本上是从Jenkins获取包含breadcrumb的XML,并获取breadcrumb所在的特定元素。该命令的结果应该类似于:
Jenkins-Crumb:<someLongLongLongToken>
您可以将breadcrumb保存到变量中,例如将其命名为breadcrumb,然后:
curl -u 'Foo:<token>' -X POST --data '<parameters>' -H '$breadcrumb' www.mysuperduperjenkins.com
在这个curl中,我们使用在上一步中获得的breadcrumb作为头部。如果crumb是有效的,您应该能够执行请求,而不会出现403/401错误。
https://stackoverflow.com/questions/61041171
复制相似问题