web.xml中的安全性约束未应用于具有文件扩展名的URL模式

问题描述 投票:13回答:2

我在web.xml中输入了以下安全约束。我的目标是XML文件位于“公共”区域中。这适用于/images/*文件夹。但是,URL模式*.xml似乎不起作用。有什么想法吗?

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Public Area</web-resource-name>
            <url-pattern>/xyz</url-pattern>
            <url-pattern>/images/*</url-pattern>
            <url-pattern>/yyz/*</url-pattern>
            <url-pattern>*.xml</url-pattern>
        </web-resource-collection>
    </security-constraint>

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Super User Area</web-resource-name>
            <url-pattern>/test/list1</url-pattern>
            <url-pattern>/test/list2</url-pattern>
            <url-pattern>/test/list3</url-pattern>
            <url-pattern>/test/admin.html</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>SUPER_USER</role-name>
        </auth-constraint>
    </security-constraint>

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Protected Area</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>ADMIN</role-name>
            <role-name>END_USER</role-name>
        </auth-constraint>
    </security-constraint>


    <security-role>
        <description>Super User</description>
        <role-name>SUPER_USER</role-name>
    </security-role>
    <security-role>
        <description>Admin User</description>
        <role-name>ADMIN</role-name>
    </security-role>
    <security-role>
        <description>End User</description>
        <role-name>END_USER</role-name>
    </security-role>
java servlets web.xml security-constraint
2个回答
8
投票

您的其他URL模式中的一个比该url-pattern-* .xml requestURI更匹配,这就是它不起作用的原因。例如,如果您具有/test/list/user.xml,则它将被视为超级用户区域中的Web资源集合,因此SUPER_USER仅具有访问权限。因此,请确保将url-pattern声明为更特定于资源,以避免冲突和误解。谢谢


1
投票

实际上,放置顺序是有问题的,首先安全性约束应该是超级用户,然后是公共区域安全性约束。如果您放置的安全约束属于公共区域,它将被后面的安全约束覆盖。

© www.soinside.com 2019 - 2024. All rights reserved.