Java Tomcat SSL排除URL模式

Java Tomcat SSL排除URL模式,java,rest,tomcat,ssl,java-ee-6,Java,Rest,Tomcat,Ssl,Java Ee 6,我有一个web应用程序,它承载web应用程序本身和一个REST端点 web应用程序对每个资源都使用SSL。但是,我希望使用普通HTTP访问REST端点,而不必提供证书。原因是,REST端点由没有证书的服务访问 我试图在我的web.xml中设置两个不同的安全约束,但这没有帮助。即使我访问REST端点,协议也会自动转换为HTTPS 我的配置如下所示: <!-- For the REST Endpoint --> <security-constraint> <we

我有一个web应用程序,它承载web应用程序本身和一个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资源(例如rest端点URL)在访问它们时如何使用HTTP,但同时web应用程序的其余部分使用HTTPS吗

我四处搜索,人们建议使用自定义过滤器。这是我唯一的解决方案,还是我可以通过配置成功

多谢各位


注:我使用Tomcat7作为应用服务器

我想第二个约束会因为/*而推翻第一个约束。您是否尝试先交换所需的两个约束证书?顺便说一句:我不理解其原因,每个服务消费者都应该能够处理TLS/SSL.Hi@home谢谢您的回复。不,我没有试着切换这两个,因为我读到更具体的一个应该是第一个。让我试试,然后再回来找你。确实,原因很奇怪,但是访问rest端点的服务是在系统帐户ie自动进程下运行的,目前没有证书。因此REST服务返回一个错误。那么,它是通过交换来工作的吗?对我来说,它不起作用。只是想知道你是怎么解决的?