我一直在使用Github Jenkins webhook一段时间没有问题。 我让我的Jenkins在Nginx代理后面运行,唯一安装的安全性是nginx htpasswd。 所以我的Github webhook看起来像这样:
https://user:pass@jenkins.blablabla.biz/job/script/buildWithParameters
成为用户并从htpasswd文件传递凭据。
现在我正在尝试将用户添加到我的Jenkins中,并通过注册和登录Jenkins选项激活了基于矩阵的安全性。 服务器最初工作完美,要求获得nginx凭证,jenkins登录第二。
我在Jenkins中创建了一个github用户,并为他生成了一个令牌。 现在我改变了我的Github webhook以使用新的Jenkins github用户凭证:
https://github:token@jenkins.blablabla.biz/job/script/buildWithParameters
只要我知道这应该有效。但事实并非如此。 我认为这里的问题是激活了两个安全系统(nginx htpasswd和jenkins登录)。但我想要两个。
我必须在我的webhook中使用这两个凭据吗?我怎么能这样做?
当我使用nginx凭证时,当触发webhook时,Github会从jenkins收到此响应:
需要身份验证您的身份验证为:匿名 您所在的群组:您需要拥有的权限(但没有): hudson.model.Hudson.Read ...暗示: hudson.security.Permission.GenericRead ...隐含的: hudson.model.Hudson.Administer
当我使用jenkins凭证时,Github会在触发webhook时收到jenkins的回复:
401需要授权
401需要授权
nginx / 1.11.10
答案 0 :(得分:1)
您可以在nginx.conf中为一个网址禁用基本身份验证:
location /github-webhook/ {
auth_basic "off";
...
}
location / {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
...
}
答案 1 :(得分:0)
最后,我决定关闭基于Nginx Http的安全性,并仅依赖于jenkins安全性。现在我的jenkins服务器可以从任何地方看到。 我更改了Github jenkins webhook的格式以使用Jenkins令牌根插件: https://wiki.jenkins-ci.org/display/JENKINS/Build+Token+Root+Plugin
我没有找到使用这两种身份验证方法的方法。 想法是要求额外的通行证(基于http)如果有人试图从办公室外访问。
这就是全部。