我有一个Web应用程序,它托管web-app本身和REST端点。
Web应用程序正在为每个资源使用SSL。但是,我想使用纯HTTP来访问REST端点,而无需提供证书。原因是,REST端点由没有证书的服务加入。
我尝试在web.xml中设置两个不同的安全约束,但这没有帮助。即使我访问REST端点,协议也会自动转为HTTPS。
我的配置如下所示:
<!-- For the REST Endpoint -->
<security-constraint>
<web-resource-collection>
<web-resource-name>Rest_Endpoint</web-resource-name>
<url-pattern>/restEndpoint/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<!-- The security constraint -->
<security-constraint>
<display-name>certificate required</display-name>
<web-resource-collection>
<web-resource-name>web_application</web-resource-name>
<url-pattern>/*</url-pattern><!-- Every URI will be under certificate protection -->
</web-resource-collection>
<auth-constraint>
<description>Allowed roles for this security constraint</description>
<role-name>test_role</role-name>
</auth-constraint>
<user-data-constraint>
<description>SSL required</description>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
我在这里遗漏了什么吗?您是否知道某些Web资源(例如其他端点URL)在访问时如何使用HTTP,但与此同时,其余的Web应用程序使用HTTPS?
我搜索过,人们建议使用自定义过滤器。这是我唯一的解决方案,还是我可以通过配置成功实现我的目标?
谢谢。
P.S:我使用Tomcat 7作为应用程序服务器