【问题标题】:JENKINS Authentication FailsJENKINS 身份验证失败
【发布时间】:2014-10-13 04:54:37
【问题描述】:

我在尝试从任何 REST 客户端触发 Jenkins 作业时遇到以下错误

Authentication required

     <!-- You are authenticated as: anonymous
Groups that you are in:

Permission you need to have (but didn't):
hudson.model.Hudson.Read
... which is implied by: hudson.security.Permission.GenericRead
... which is implied by: hudson.model.Hudson.Administer
-->
    </body> </html>

从终端使用 curl 时触发请求

我正在使用以下语法

http://user:apiToken@jenkins.yourcompany.com/job/your_job/build?token=TOKEN [参考:https://wiki.jenkins-ci.org/display/JENKINS/Authenticating+scripted+clients]

即。 curl -X POST http://user:apiToken@jenkins.yourcompany.com/job/your_job/build?token=TOKEN

【问题讨论】:

  • 我正在使用相同的方案,它在浏览器中为我工作:user:ApiToken@domain.com/job/my_job/build?token=TOKEN

标签: rest curl jenkins postman


【解决方案1】:

选中此“此版本已参数化”,从下拉列表中选择凭据参数。 用这个

curl -X POST http://jenkins.rtcamp.com/job/Snapbox/buildWithParameters --user "username:password"

它解决了我的身份验证问题。

我希望它也能帮助其他人。

【讨论】:

    【解决方案2】:

    我的开发团队的配置设置是 matrix-based security,所以我必须找到我的小组并授予我小组工作区的访问权限。

    1.Click on Manage Jenkins .   
    2.Click on Configure Global Security .  
    3.in matrix-based security change: 
    
    Overall - Read   
    Job - Build  
    Job - Read   
    Job - Workspace  
    

    然后

        POST jobUrl/buildWithParameters HTTP/1.1
        Host: user:token
        Authorization: Basic dWdlbmxpazo4elhjdmJuTQ==
        Cache-Control: no-cache
        Content-Type: application/x-www-form-urlencoded
    
        Branch=develop
    

    【讨论】:

      【解决方案3】:
      【解决方案4】:

      尝试使用 -u 参数指定凭据:

      curl -u user:apiToken -X POST http://jenkins.yourcompany.com/job/your_job/build?token=TOKEN

      【讨论】:

      • 这确实适用于 curl。但我正在尝试从 POSTMAN REST 客户端触发相同的作业,但由于需要身份验证而失败。
      • 如果它与 curl 一起使用,您显然在邮递员客户端参数方面存在特定问题。抱歉,我对此一无所知,但至少它缩小了问题范围。
      【解决方案5】:

      我提供了带有值的标头授权参数: BASIC base_64encoded(username:password) 并且运行良好。

      授权基础 bmltbWljdjpqZX*********

      【讨论】:

      • 也为我工作。如果您需要 Base64 编码器,请查看base64encode.org
      • 我强烈建议您不要使用 base64encode.org 作为您的凭据,因为它将输入发送到服务器。许多系统都会有一个 base64 命令,您可以使用它,例如 echo -n 'test:testpass' | base64
      【解决方案6】:

      只需在全局安全选项中禁用“CSRF 保护”,因为这些 URL 不会发送发布数据标识。

      【讨论】:

        【解决方案7】:

        焦点: 用户名:密码@

        curl -u user:apiToken -X POST http://username:password@jenkins.yourcompany.com/job/your_job/build?key1=value1&key2=value2 ...
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-24
          • 2017-11-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多