Jenkins:当使用Matrix授权策略时,'Trigger远程构建'使用?令牌无效

Stu*_*t M 23 authentication jenkins

我在启用身份验证的Jenkins中触发构建时遇到问题,并且想知道是否有人有想法.

我将Global Security配置为使用LDAP并启用"基于项目的矩阵授权策略"."匿名"用户具有"作业>构建"权限,没有其他权限(特别是"匿名"用户没有"总体>读取"权限,因为我不希望每个人都能够查看工作清单和其他一般信息).

我希望自动脚本能够使用"触发器远程构建"功能触发构建,其中我?token=[token]在URL中指定一个值,并且应该绕过标准身份验证,只要该[token]值与我在作业中设置的值匹配即可.配置页面.我们的目标是不是需要提供在请求一个普通的用户名/密码,而只是提供这种特定的工作令牌.

文档似乎表明这应该工作:https:
//wiki.jenkins-ci.org/display/JENKINS/Quick+and+Simple+Security

具体来说,我希望这个HTTP请求能够正常工作:

curl -i https://jenkinsHost/job/ProjectName/build?token=test
Run Code Online (Sandbox Code Playgroud)

但我得到:

[~]$ curl -i https://jenkinsHost/job/ProjectName/build?token=test
HTTP/1.1 403 Forbidden
Date: Sat, 27 Apr 2013 23:17:03 GMT
Server: Winstone Servlet Engine v0.9.10
Content-Type: text/html;charset=UTF-8
Content-Length: 629
X-Powered-By: Servlet/2.5 (Winstone/0.9.10)
Set-Cookie: JSESSIONID.e9bc4765=e1f0a30b9f04b3740bae527a7822b2d5; Path=/; HttpOnly
Connection: close

<html><head><meta http-equiv='refresh' content='1;url=/login?from=%2Fjob%2FProjectName%2Fbuild%3Ftoken%3Dtest'/>
<script>
window.location.replace('/login?from=%2Fjob%2FProjectName%2Fbuild%3Ftoken%3Dtest');</script>
</head>
<body style='background-color:white; color:white;'>
Authentication required
</body></html>
Run Code Online (Sandbox Code Playgroud)

当我DO使用API认证,请求工作:

curl --username "test_user:API_KEY" https://hostname/job/ProjectName/build?token=test
Run Code Online (Sandbox Code Playgroud)

但同样,根据文档,我认为如果存在令牌并且匹配我配置的项目令牌,它应该绕过全局验证.为什么这不起作用?我可以提供哪些其他信息/日志?

Dan*_*eck 37

即使Jenkins禁止匿名读取访问,也有一个新的插件可以让你这样做:

构建令牌根插件

使用:

$ curl 'http://jenkins/buildByToken/build?job=jobname&token=mytoken'
Scheduled.
Run Code Online (Sandbox Code Playgroud)

同样地buildWithParameters.

  • 谢谢!我注意到也可以在URL中传递`&cause = <reason>`以提供构建被触发的原因,这对于跟踪目的很方便 (2认同)
  • 我安装了这个插件,jenkins 仍然将curl 请求重定向到登录。有什么配置需要吗? (2认同)