Dans une Java-webapp (war), comment utiliser HTTP-auth pour un contenu statique?
-
05-07-2019 - |
Question
J'ai une application Web Java. La webapp est packagée dans un fichier war. Ces fichiers war autorisent le contenu statique, qui est directement transmis via HTTP. Pour les servlets de cette guerre, je peux effectuer une authentification HTTP (implémentez-la avec le servlet lui-même). Mais je veux aussi HTTP-auth pour le contenu statique. Comment puis-je m'en rendre compte?
La solution
Créez une classe qui implémente javax.servlet.Filter. Voir L'essentiel des filtres
La méthode principale est doFilter à laquelle sont transmis les objets ServletRequest, ServletResponse et FilterChain. C’est là que vous imposez l’authentification.
Déclarez ensuite votre filtre dans web.xml et un mappage de filtre comme suit (mappe chaque requête)
<filter>
<filter-name>Authentication Filter</filter-name>
<filter-class>
com.nfsdsystems.security.filters.AuthenticationFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Authentication Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Autres conseils
Placez vos fichiers HTML statiques dans un répertoire et définissez vos contraintes de sécurité dans votre web.xml. Mappez les contraintes sur le rôle approprié.
<security-constraint>
<display-name>securedResources</display-name>
<web-resource-collection>
<web-resource-name>securedRes</web-resource-name>
<url-pattern>/secured/*</url-pattern>
<http-method>GET</http-method>
<http-method>PUT</http-method>
<http-method>HEAD</http-method>
<http-method>TRACE</http-method>
<http-method>POST</http-method>
<http-method>DELETE</http-method>
<http-method>OPTIONS</http-method>
</web-resource-collection>
<auth-constraint>
<description>
authenticatedUser_securedRes</description>
<role-name>authenticatedUsed</role-name>
</auth-constraint>
</security-constraint>