tomcat - Jenkins 和 Tomcat 使用 Reverse-Proxy Auth 插件

标签 tomcat plugins jenkins basic-authentication reverse-proxy

关于如何使用基本 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:8080http://localhost:8080/jenkins没有登录提示,但如果我更改 <url-pattern>/jenkins/*</url-pattern><url-pattern>/*</url-pattern>我只需转到 http://localhost:8080 就会收到登录提示。 , 这很好。登录后,如果我转到/jenkins,我会被转发到登录页面,该页面“一团糟”[没有任何资源显示,页面看起来很破烂]。

这是它的样子:

Broken 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 。仍然想要解决我的问题,但还没有找到...

最佳答案

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

  1. 除非您打算使用 Apache 或其他一些网络服务器作为反向代理,否则您不需要反向代理身份验证插件。
  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 的配置,用于提供静态 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/

相关文章:

maven - Jenkins + Maven 中的自动增量版本号

java - 解析日期字符串时抛出多个异常

java - 无法在eclipse中添加tomcat 8

java - Tomcat 7.x 和在 JDK 1.5 上编译的代码

angular - 无法在 Tomcat 服务器中使用 angular-seed 部署 angular2 应用程序

search - 在浏览器中进行实时xpath搜索

zend-framework - 从 Zend Controller 插件中获取 View 对象

eclipse - Subclipse和Tortoise SVN一起

docker - Jenkins 无法安装插件 unknownhost

jenkins - 只有在特定分支上有推送时,才可以使用 webhook 吗?