【问题标题】:Jenkins API Crumb 403詹金斯 API 碎屑 403
【发布时间】:2020-04-05 10:27:39
【问题描述】:

我正在使用 Curl 向 Jenkins API 发出请求——这是通过 https 完成的。 按照 Jenkins 的建议,使用反向代理在 IIS 中设置 Jenkins。 Jenkins 站点具有 Windows 身份验证。 我需要在请求中传递一个 Crumb - 403 错误。

但是,当我请求 Crumb 时,它说我需要提供 Crumb? 我需要它通过命令提示符/批处理文件工作。

谢谢

【问题讨论】:

    标签: rest api jenkins


    【解决方案1】:

    为了能够对 Jenkins 进行 API 调用,您需要在 Jenkins 中为给定用户生成一个令牌。例如,让我们用用户Foo 来做。您需要使用 Foo 用户登录,然后在 Web UI 中登录:Foo (right upper corner) > Configure > API token > Add new token

    当您将令牌保存在某处后,您可以使用以下命令检索面包屑:

    curl --user Foo:<token> 'https://www.mysuperduperjenkins.com/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)'

    这基本上是从 Jenkins 获取包含面包屑的 XML 并获取面包屑所在的特定元素。命令的结果应该类似于:

    Jenkins-Crumb:<someLongLongLongToken>

    您可以将面包屑保存到变量中,例如将其命名为breadcrumb,然后:

    curl -u 'Foo:<token>' -X POST --data '<parameters>' -H '$breadcrumb' www.mysuperduperjenkins.com

    在这个 curl 中,我们使用面包屑作为标题,在上一步中获得。如果面包屑有效,您应该能够执行请求而不会出现 403/401 错误。

    【讨论】:

    • 您好,我已经生成了一个令牌,并将其与以下 --data "token=" 一起使用。这是因为我的组织通过具有 NTLM 身份验证的 IIS 设置了 Jenkins。所以我需要做 : 但是,问题是当我请求面包屑时,它给了我一个 403 错误,没有有效的面包屑。当我想得到面包屑时,为什么它会给我这个错误?很奇怪...有什么想法吗?
    • 哎呀,从来没有这样的设置...也许你可以看看这里:stackoverflow.com/questions/17031965/… 也许做curl --proxy-ntlm --proxy-user <user>:<pass> --proxy <url>:<port> --user <user>:<token> 'https://<url>/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)' 工作?
    • 但是如果我使用 HTTP,我不会得到 404...但是我需要使用 https
    猜你喜欢
    • 1970-01-01
    • 2018-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多