web-dev-qa-db-ja.com

ファイル拡張子を持つURLパターンにweb.xmlのセキュリティ制約が適用されない

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>
13
mithrandir

他のURLパターンの1つがこれ以上一致していますurl-pattern-* .xml requestURI、それが機能しない理由です。たとえば、/test/list/user.xmlの場合、これはスーパーユーザーエリアのWebリソースコレクションとして扱われるため、SUPER_USERはアクセスのみが可能です。そのため、衝突や誤解を避けるために、url-patternがリソースに対してより具体的に宣言されていることを確認してください。ありがとう

8
Keerthivasan

実際には、配置の順序が問題です。最初のセキュリティ制約はsuper_userで、次にパブリックエリアのセキュリティ制約である必要があります。セキュリティ制約がパブリックエリアに属している場合は、それに続くセキュリティ制約によって上書きされます。

1
Prakash V