如何在部署到Tomcat的Web应用程序中覆盖安全性约束

时间:2015-02-24 20:16:57

标签: java tomcat jenkins

我有点腌渍,但合理的解决方案可能会帮助很多人(甚至数千人)。

我想将最新版本的Jenkins(编写本文时为1.599)部署到Tomcat容器(7.0.39),然后强制所有流量使用SSL。

我将$ CATALINA_BASE / conf / server.xml中的连接器设置为他们需要的连接器。然后我将以下内容添加到$ CATALINA_BASE / conf / web.xml ...

<security-constraint>
  <web-resource-collection>
    <web-resource-name>Jenkins</web-resource-name>
    <url-pattern>/*</url-pattern>
  </web-resource-collection>
  <user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  </user-data-constraint>
</security-constraint>
然而,遗憾的是,这不会起作用,因为詹金斯战争中的web.xml会覆盖它。

<security-constraint>
  <web-resource-collection>
    <web-resource-name>other</web-resource-name>
    <url-pattern>/*</url-pattern>
  </web-resource-collection>
  <!-- no security constraint --> 
</security-constraint>

据我了解,没有办法允许我强制从Tomcat web.xml中进行设置。每次新版本发布时我都不会手动编辑我的WAR,这不是一个选项。

所以,问题是,更改服务器或客户端web.xml的最佳方法是什么,以便默认设置仍然存在,但我们可以选择强制传输保证机密。< / p>

欢迎任何想法! :)

2 个答案:

答案 0 :(得分:1)

不确定它是否会有所帮助,但我遇到了相反的问题。公司政策是不允许PUT,DELETE或OPTIONS,所以他们在tomcat conf / web.xml中有这样的部分:

<security-constraint>
  <web-resource-collection>
     <web-resource-name>
       restricted methods
     </web-resource-name>
     <url-pattern> /* </url-pattern>
     <http-method> PUT </http-method>
     <http-method> DELETE </http-method>
     <http-method> OPTIONS </http-method>
     <http-method> TRACE </http-method>
  </web-resource-collection>
  <auth-constraint />
</security-constraint>

我发现我可以在应用程序web.xml中为子目录

覆盖它
<security-constraint>
   <web-resource-collection>
    <web-resource-name>REST Endpoints</web-resource-name>
    <url-pattern>/rest/*</url-pattern>
  </web-resource-collection>
</security-constraint>

但不适用于上下文根(以下内容不允许OPTIONS工作):

<security-constraint>
   <web-resource-collection>
    <web-resource-name>REST Endpoints</web-resource-name>
    <url-pattern>/*</url-pattern>
   </web-resource-collection>
</security-constraint>

您的意思是您可以在没有任何问题的情况下为子目录要求SSL。不确定这是否足以满足您的詹金斯要求。

答案 1 :(得分:0)

我刚注意到http://docs.oracle.com/cd/E19798-01/821-1841/bncbk/index.html中的以下语言:

  

当多个安全性中出现相同的url-pattern和http-method时   约束,对模式和方法的约束由定义   结合各个约束,这可能导致   无意中拒绝访问。

这表明您指定的约束将被合并,这意味着您正在尝试的约束应该起作用。您确定在服务器上正确配置了SSL吗?编辑应用程序中的web.xml实际上是否解决了问题?同一篇文章的这一部分似乎暗示如果没有正确配置SSL,它可能会回退到http:

  

为确保数据通过安全连接传输,请确保   为您的服务器配置了SSL支持。 SSL支持已经存在   为GlassFish Server配置。