Authentification type .htaccess sous Tomcat
Sommaire
I. Présentation
Dans ce tutoriel, nous allons mettre en place une authentification de type .htaccess (typique d'Apache2) sous le serveur web Tomcat7. Il est important de savoir qu'en réalité, Tomcat7 ne gère pas les fichiers .htaccess. Seul le principe de demande de l'authentification est à retenir de ce qu'on appel par abus de langage "une authentification .htaccess". Nous allons donc ici vouloir qu'une barrière d'authentification soit présente à partir d'une certain e arborescence du site et que cette barrière soit levée seulement aux utilisateurs qui s'authentifient correctement sur le serveur.
II. Mise en place de l'environnement de test
Nous allons ici mettre en place un serveur Tomcat 7 avec un site fictif sur lequel nous allons tester notre authentification. Pour tout le tutoriel, nous présumons l'utilisation d'un Tomcat7 aux configurations basiques et stocké dans "/var/lib/tomcat7".
Note : Si votre Tomcat7 et le site nécessitant l'authentification sont déjà en place, passez directement à la partie "II. Mise en place de la barrière d'authentification"
Nous commençons donc par installer Tomcat7 sur notre serveur :
apt-get update && apt-get install tomcat7
Le répertoire par défaut est donc "/var/lib/tomcat7", nous créons notre site fictif que nous appellerons "site1" dans le répertoire "webapps" :
mkdir /var/lib/tomcat7/webapps
Puis nous y mettons un fichier "index.html" que nous remplirons comme suivante afin d'avoir un affichage lorsque nous y accéderons :
<html> <body> Tomcat Site 1 </body> </html>
Nous mettons enfin les droits à l'utilisateur "tomcat7" sur ce répertoire :
chown -Rf /var/lib/tomcat7/webapps/site1
et nous redémarrons Tomcat7 :
service tomcat7 restart
Nous pourrons alors accéder à notre site web par un navigateur via l'URL http://@serveur:8080/site1
III. Mise en place de la barrière d'authentification
Nous allons maintenant vouloir mettre en place la barrière d'authentification. Cette authentification sera donc demandé lors de l'accès à l'arborescence du serveur web à partir de "/site1/*". Nous allons pour cela modifier le ficiher "/var/lib/tomcat7/conf/web.xml", nous ajoutons les balises suivante après la balise d'ouverture "web-app" :
<security-constraint> <web-resource-collection> <web-resource-name>Ressource</web-resource-name> <url-pattern>/site1/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>user</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>BASIC</auth-method> <realm-name>Your Realm Name</realm-name> </login-config> <security-role> <description>Description</description> <role-name>user</role-name> </security-role>
La partie de l'arborescence du site web que nous souhaitons spécifier est donc dans les balises "url-pattern". Afin d'en spécifier plusieurs, nous pouvons reproduire la partie "web-ressource-location" avec un autre nom et une autre arborescence.
IV. Ajout des utilisateurs autorisés
Nous allons maintenant aller ajouter les utilisateurs qui sont autorisé à s'authentifier sur notre barrière d'authentification, nous allons pour cela dans fichier "/var/lib/tomcat7/conf/tomcat-users.xml" et ajoutons les balises suivantes par utilisateur :
<tomcat-users> <role rolename="user"/> <user username="neoflow" password="neoflowpass" roles="user" /> </tomcat-users>
Il est ici important que le "rolename" soit le même que celui indiqué dans le fichier "web.xml". Nous allons ensuite redémarrer Tomcat7 pour que les changements soient pris en compte :
service tomcat7 restart
puis nous pourrons tenter d'accéder à notre site web par l'URL http://@server:8080/site1 et nous aurons une demande d'authentification.