Authentification type .htaccess sous Tomcat

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.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Co-fondateur d'IT-Connect.fr. Auditeur en sécurité des systèmes d'information chez Amossys

mickael has 504 posts and counting.See all posts by mickael

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

 

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.