在 web.xml 安全约束中配置例外

Configuring an exception in web.xml security-constraint

我知道已经有其他帖子类似我的疑惑,但问题是我无法解决问题。 我有一个必须使用名称 "passport.jsp" 映射的 servlet,因为外部应用程序(无法更改调用)通过 URL http://myipserver:portserver/nameApplication/passport.jsp?xxx 发出请求 我的 web.xml 在这里:

<servlet-mapping>
    <servlet-name>PortalServlet</servlet-name>
    <url-pattern>/passport.jsp</url-pattern>
</servlet-mapping>

问题是我的安全约束的映射覆盖了 servlet passport.jsp 的定义,因为映射“*.jsp”。

<security-constraint>
    <display-name>EsconderJSP</display-name>
    <web-resource-collection>
        <web-resource-name>JSP</web-resource-name>
        <description/>
        <url-pattern>*.jsp</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>
    <auth-constraint>
        <description/>
        <role-name>jsps</role-name>
    </auth-constraint>
</security-constraint>

有人知道怎么解决吗?您可以添加 servlet“/passport.jsp”作为例外。

感谢您的关注。

您可以在它上面添加另一个没有保护的安全约束

<security-constraint>
    <web-resource-collection>
        <url-pattern>/passport.jsp</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>*</role-name>
    </auth-constraint>
    <user-data-constraint>
        <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
</security-constraint>

或者您可以将应用程序请求更改为从不同的内容开始以进行保护。这将使护照申请不受保护。

http://myipserver:portserver/nameApplication/otherRequests/foobar.jsp

http://myipserver:portserver/nameApplication/passport.jsp

那就只保护/otherRequests/*

<url-pattern>/otherRequests/*</url-pattern>

我解决了只是在我的 web.xml(其他安全约束)

中添加一个新标签
<security-constraint>
    <web-resource-collection>
        <web-resource-name>free pages</web-resource-name>
        <url-pattern>/passport.jsp</url-pattern>
    </web-resource-collection>
</security-constraint>

安,它正在工作。谢谢