Tomcat SSL排除URL模式

时间:2014-04-24 16:27:16

标签: java rest tomcat ssl java-ee-6

我有一个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作为应用程序服务器

0 个答案:

没有答案