4

关于如何使用基本 HTTP 身份验证让 Jenkins 在 Tomcat 服务器上运行,我似乎找不到很好的解释。

一些基本信息:

操作系统:Windows 7 64 位
Tomcat 版本:7.0.40
Jenkins 版本:1.516
Reverse-Proxy Auth 插件版本: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:8080http://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
添加了一张詹金斯“坏掉”时的样子

更新 1
仍然遇到同样的问题,在 web.xml 文件中尝试了不同的组合,但仍然遇到同样的问题。

更新 2
尚未找到修复,但我一直在尽我所能解决它。我将 url-pattern 设置为/*,登录到 Tomcat,停止服务器,将其更改回/jenkins/*(我相信什么都不做)并再次启动服务器,然后转到 Jenkins 页面以获取经过身份验证的 HTTP 标头。仍然想要解决我的问题,但还没有找到...

4

1 回答 1

1

以下是我能够发现的问题:

  1. 除非您计划使用 Apache 或其他 Web 服务器作为反向代理,否则您不需要反向代理身份验证插件。
  2. 应该有一个

    <security-role>
      <role-name>Administrator</role-name>
    </security-role>
    

    元素后的<login-config>元素

  3. C:/Program Files/Apache Software Foundation/Tomcat 7.0/conf/web.xml是 Tomcat 的“默认”servlet 的配置,用于提供静态资产。向这个 servlet 添加安全约束会导致所有静态资产变得不可访问,这会导致登录屏幕充满死链接。

相反,将安全约束添加到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 文档

于 2013-06-09T00:59:32.960 回答