web-dev-qa-db-fra.com

Contrainte de sécurité dans web.xml

J'ai les contraintes de sécurité suivantes entrées dans le fichier web.xml. Mon objectif est que les fichiers XML soient dans la zone publique. Cela fonctionne pour le dossier /images/*. Cependant, l'url-pattern *.xml ne semble pas fonctionner. Des idées ?

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

Un de vos autres modèles d'URL correspond plus à ce url-pattern - * .xml requestURI, c'est pourquoi il ne fonctionne pas. Par exemple, si vous avez /test/list/user.xml, cela sera traité comme une collection de ressources Web dans la zone Super utilisateur et ainsi, SUPER_USER ne pourra y avoir accès. alors, assurez-vous que le motif d'URL est déclaré plus spécifique aux ressources pour éviter les conflits et les erreurs d'interprétation. Merci

8
Keerthivasan

En réalité, la séquence de placement est fonction du problème, les contraintes de sécurité doivent être en premier lieu le super_utilisateur, puis les contraintes de sécurité des zones publiques. Si vous mettez la contrainte de sécurité dans la zone publique, elle sera écrasée par les contraintes de sécurité suivies.

0
Prakash V