关于如何使用基本 HTTP 身份验证让 Jenkins 在 Tomcat 服务器上运行,我似乎找不到很好的解释。
一些基本信息:
操作系统:Windows 7 64位
Tomcat版本:7.0.40
Jenkins 版本:1.516
反向代理身份验证插件版本:1.0.1
Java SDK 版本:1.7.0_17
Java JRE 版本:7
使用 Chrome 和 IE 测试
我目前在我的 Tomcat 服务器上成功启动并运行了 Jenkins,启用了反向代理身份验证插件 (https://wiki.jenkins-ci.org/display/JENKINS/Reverse+Proxy+Auth+Plugin),在 tomcat-users.xml
中添加了一个用户和角色, 并向我添加了几行 web.xml
.两者都显示在下面。 (两个文件都位于 C:/Program Files/Apache Software Foundation/Tomcat 7.0/conf/
)
tomcat-users.xml(除了添加一个角色和一个用户,其他都是默认的)
<role rolename="Administrator"/>
<user username="John" password="password" roles="Administrator"/>
web.xml(除添加此部分外均默认)
<security-constraint>
<web-resource-collection>
<web-resource-name>
Jenkins
</web-resource-name>
<url-pattern>/jenkins/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>Administrator</role-name>
</auth-constraint>
</security-constraint>
<!-- Define the Login Configuration for this Application -->
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
我不知道为什么,但每当我去http://localhost:8080
或 http://localhost:8080/jenkins
没有登录提示,但如果我更改 <url-pattern>/jenkins/*</url-pattern>
至 <url-pattern>/*</url-pattern>
我只需转到 http://localhost:8080
就会收到登录提示。 , 这很好。登录后,如果我转到/jenkins,我会被转发到登录页面,该页面“一团糟”[没有任何资源显示,页面看起来很破烂]。
这是它的样子:
这是我发现的一个链接,它与我遇到的问题很接近。 https://groups.google.com/forum/?fromgroups#!topic/jenkinsci-users/AVTklGHmzkc
如有任何帮助,我们将不胜感激!
编辑 1
在需要/相关的情况下添加了 Java 版本
编辑 2
添加了 Jenkins 在“崩溃”时的样子的图片
更新 1
仍然遇到同样的问题,在 web.xml 文件中尝试了不同的组合,但仍然遇到同样的问题。
更新 2
尚未找到修复程序,但我一直在尽力解决它。我会将 url-pattern 设置为 /*
,登录 Tomcat,停止服务器,将其改回 /jenkins/*
(我相信这什么都不做)并再次启动服务器,然后转到 Jenkins 页面以获取经过身份验证的 HTTP header 。仍然想要解决我的问题,但还没有找到...
最佳答案
以下是我能够发现的问题:
- 除非您打算使用 Apache 或其他一些网络服务器作为反向代理,否则您不需要反向代理身份验证插件。
应该有一个
<security-role> <role-name>Administrator</role-name> </security-role>
<login-config>
之后的元素元素C:/Program Files/Apache Software Foundation/Tomcat 7.0/conf/web.xml
是 Tomcat 的“默认”servlet 的配置,用于提供静态 Assets 。向该 servlet 添加安全约束会导致所有静态 Assets 变得不可访问,这会导致您的登录屏幕充满死链接。
相反,将安全约束添加到 C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps/jenkins/WEB-INF/web.xml
这应该可以正常工作,但需要对 C:/Program Files/Apache Software Foundation/Tomcat 7.0/conf/server.xml
进行额外更改可能需要配置领域。查看Tomcat doc related to this .
关于tomcat - Jenkins 和 Tomcat 使用 Reverse-Proxy Auth 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16819713/