JENKINS 身份验证失败

Posted

技术标签:

【中文标题】JENKINS 身份验证失败【英文标题】:JENKINS Authentication Fails 【发布时间】: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 【参考方案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】:

对我来说

https://user:password@jenkins.mycompany.org/job/job_name/build?token=my_token

在https://jenkins.mycompany.org/configureSecurity

禁用 CORS

希望有帮助

【讨论】:

【参考方案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 ...

【讨论】:

以上是关于JENKINS 身份验证失败的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins/Nginx - 双重提示基本身份验证,为啥?为啥有内部 Jenkins 身份验证?

LDAP 身份验证不适用于 Jenkins

Jenkins 支持 Github APP 身份验证了

Jenkins + Active Directory身份验证 - 缓慢登录

如何在 Jenkins 中设置多种身份验证方式,例如 LDAP 和 Jenkins 用户数据库?

Jenkins持续集成 之 Active Directory身份登陆验证