Authentication 詹金斯:';远程触发构建';使用矩阵授权策略时,令牌不起作用

Authentication 詹金斯:';远程触发构建';使用矩阵授权策略时,令牌不起作用,authentication,jenkins,Authentication,Jenkins,我在启用身份验证的情况下触发内置时遇到问题,我想知道是否有人有想法 我已将全局安全性配置为使用启用了“基于项目的矩阵授权策略”的LDAP。“匿名”用户拥有“作业>生成”权限,没有其他权限(特别是,“匿名”用户没有“总体>读取”权限,因为我不希望每个人都能查看作业列表和其他一般信息) 我希望一个自动脚本能够使用“远程触发构建”功能触发构建,其中我在URL中指定一个?token=[token]值,只要[token]值与我在作业的配置页面中设置的值匹配,就应该绕过标准身份验证。目标是不需要在请求中提供

我在启用身份验证的情况下触发内置时遇到问题,我想知道是否有人有想法

我已将全局安全性配置为使用启用了“基于项目的矩阵授权策略”的LDAP。“匿名”用户拥有“作业>生成”权限,没有其他权限(特别是,“匿名”用户没有“总体>读取”权限,因为我不希望每个人都能查看作业列表和其他一般信息)

我希望一个自动脚本能够使用“远程触发构建”功能触发构建,其中我在URL中指定一个
?token=[token]
值,只要
[token]
值与我在作业的配置页面中设置的值匹配,就应该绕过标准身份验证。目标是不需要在请求中提供常规用户名/密码,只需为该特定作业提供令牌

文档似乎表明这应该有效:

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

curl -i https://jenkinsHost/job/ProjectName/build?token=test
但我得到:

[~]$ 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>

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

有一个新插件,允许您在Jenkins禁止匿名读取访问时也可以这样做:

使用:

同样地,对于使用带有POST的“Build Authorization Token Root”插件的
buildWithParameters

示例:

wget --post-data="job=MyJob&token=SECRET&MyParameter=hello" http://servername/jenkins/buildByToken/buildWithParameters

请注意,必须为此作业激活“远程触发生成”(使用授权令牌“SECRET”)

。和。Kohsuke在其中一条评论中写道,构建令牌支持已被弃用。但是谢谢你的第二个链接,也许这是有意的,但我仍然认为有一个很好的理由支持修复它!我注意到也可以在URL中传递
&cause=
,以提供触发构建的原因,这对于跟踪目的很方便。我安装了这个插件,jenkins仍然将curl请求重定向到登录。是否需要任何配置?在安装插件后,我的工作中没有看到“远程触发构建”选项:(@exabrial如果您的Jenkins上没有启用安全性,则不需要该选项。插件现在在插件列表中名为“构建授权令牌根目录”()
$ curl 'http://jenkins/buildByToken/build?job=jobname&token=mytoken'
Scheduled.
wget --post-data="job=MyJob&token=SECRET&MyParameter=hello" http://servername/jenkins/buildByToken/buildWithParameters