如何确保https仅用于apache tomcat中的某些Web服务

时间:2014-04-29 10:19:40

标签: spring web-services tomcat tomcat7 cxf

我在apache tomcat中部署了一些Web服务,http和https都可以访问所有Web服务。我希望只通过https访问很少的Web服务,而不是http。是否可以在apache tomcat或cxf或spring框架中进行配置。

对此有任何帮助对我来说非常有用。

LOKESH

2 个答案:

答案 0 :(得分:0)

要检查HTTP请求是否安全,只需致电ServletRequest.isSecure()即可。然后在检查后,您可以重定向到仅安全版本,反之亦然。

以上所有内容都可以在很多地方完成,但根据我的口味,最简单的方法是编写一个servlet filter来透明地处理上述检查&重定向。

注意:如果您的Tomcat落后于Apache或负载均衡器并且SSL在此过程的早期被终止,则上述方法可能无效。

答案 1 :(得分:0)

在您的web.xml中将<transport-guarantee>设置为CONFIDENTIAL可让您对某些网页要求使用SSL。

看起来像这样:

<security-constraint>
  <web-resource-collection>
    <web-resource-name>SSL forwarding</web-resource-name>
    <url-pattern>/secured</url-pattern>
  </web-resource-collection>
  <user-data-constraint>
    <transport-guarantee>
      CONFIDENTIAL
    </transport-guarantee>
  </user-data-constraint>
</security-constraint>

希望这有帮助。