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 身份验证?
Jenkins + Active Directory身份验证 - 缓慢登录