2016-11-01 11 views
0

J'ai un site Web que seules les personnes autorisées peuvent entrer. Si quelqu'un n'a pas d'autorisation, mon fichier web.xml les redirige vers une page d'erreur 403. Toutefois, mon application et mes pages d'erreur utilisent des fichiers js et css externes (par exemple, bootstrap). Logiquement, la page d'erreur 403 ne peut pas accéder à ces fichiers js/css, car la permission est interdite à tout sauf à la page d'erreur html.Comment gérer l'autorisation web.xml pour les fichiers js/css locaux lors du retour de '403 Forbidden'?

Comment dois-je résoudre ce problème proprement? Devrais-je exposer mon dossier de bibliothèques publiquement? Si oui, comment puis-je remplacer mes règles de sécurité pour un dossier spécifique?

J'ai regardé à travers le documentation here mais je ne vois pas ce scénario mentionné. Je suppose que je dois ajouter une contrainte de sécurité à "/ libraries", et en quelque sorte remplacer les rôles nécessaires pour la méthode HTTP GET?

Les parties potentiellement pertinentes de mon web.xml:

<error-page> 
     <error-code>403</error-code> 
     <location>/errorPages/forbidden.jsp</location> 
    </error-page> 

    <security-role> 
    <role-name>myRole</role-name> 
    </security-role> 

    <security-constraint> 
    <display-name>MySecurityConstraint</display-name> 
    <web-resource-collection> 
     <web-resource-name>WebResource</web-resource-name> 
     <url-pattern>/*</url-pattern> 
     <http-method>GET</http-method> 
     <http-method>DELETE</http-method> 
     <http-method>PUT</http-method> 
     <http-method>HEAD</http-method> 
     <http-method>OPTIONS</http-method> 
     <http-method>POST</http-method>  
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>myRole</role-name> 
    </auth-constraint> 
    <user-data-constraint> 
     <transport-guarantee>NONE</transport-guarantee> 
    </user-data-constraint> 
    </security-constraint> 

Répondre

1

Vous pouvez ajouter une somme supplémentaire simple, sécurité contrainte avec le chemin détaillé et sans contrainte auth-

<security-constraint> 
    <display-name>NoSecurityConstraint</display-name> 
    <web-resource-collection> 
     <web-resource-name>WebResource</web-resource-name> 
     <url-pattern>/library/*</url-pattern> 
     <http-method>GET</http-method> 
     <http-method>DELETE</http-method> 
     <http-method>PUT</http-method> 
     <http-method>HEAD</http-method> 
     <http-method>OPTIONS</http-method> 
     <http-method>POST</http-method>  
    </web-resource-collection> 
    </security-constraint> 

J'espère que cela résoud votre problème