Systèmes et Réseau

.htaccess et Active Directory

Aujourd’hui je vais vous parler de quelque chose d’assez spécial : L’authentification par apache de personnes à partir d’un annuaire Active Directory.

Pourquoi une telle chose ? Et bien il s’avère que ce n’est pas aussi simple que sa à mettre en œuvre mais quand on l’a fait une fois, on peut le refaire plusieurs fois facilement en copiant les règles dans un fichier « .htaccess ».

Vu que j’ai eu un peu de mal, je vais vous fournir les différentes étapes et le .htaccess final. Tout d’abord vous devez avoir un serveur Windows (2000, 2003 ou 2008) avec le rôle Active Directory. Moi j’ai effectué tout ceci sur un Windows Server 2000.

Ensuite, vous devez connaître votre nom de domine et la structure de l’arbre de votre annuaire. Pour vous aider, voici une application java que j’ai trouvée sur le net, permettant de réaliser ceci. Juste un conseil, laissez juste apparaître dans la base DN les DC=,DC=com.

Sachez que pour pouvoir parcourir votre annuaire, un compte Windows doit être utilisé, pour des raisons de sécurité, je vous conseil de créer un compte lambda avec un mot de passe bidon, non modifiable et verrouillé. Essayez de minimiser les droits de ce compte si un hacker vous le vole.

Pour cet exemple, sachez que je suis dans le domaine virtual.fr donc pour me connecté à mon serveur DNS ayant pour IP 192.168.0.12 je dois renseigner le DN suivant :

DC=virtual,DC=fr

Après avoir testé avec l’application, nous pouvons enfin nous attarder au fichier .htaccess. Vous devez tout d’abord activer les extensions apache2 authzn_ldap et ldap. Si votre .htaccess ne marche pas, activez le module rewrite.

Ensuite voici le fichier .htaccess

AuthName "Warning : Restricted Area !!"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthLDAPURL "ldap://serveur.virtual.fr:389/DC=virtual,DC=fr?sAMAccountName?sub?(objectClass=*)" NONE
AuthLDAPBindDN "ldap@virtual.fr"
AuthLDAPBindPassword motpasse
require valid-user </code>

Donc je vais expliquer chaque ligne :

AuthName "Warning : Restricted Area !!"
# définit le message qui s’affichera sur notre fenêtre de connexion
AuthType Basic
# nous définissons une authentification dite basique
AuthBasicProvider ldap
# nous demandons de passer par les annuaires LDAP
AuthzLDAPAuthoritative off
# permet de dire que nous n’utilisons pas de certificat particulier 
# lors de la requête dans Active Directory
AuthLDAPURL "ldap://serveur.virtual.fr:389/DC=virtual,DC=fr?sAMAccountName?sub?(objectClass=*)" NONE
# url utilisée pour aller effectuée notre requête. Nous demandons d’aller vérifier le nom de compte
# à partir de n’importe quelle classe d’objet de notre annuaire mais ayant pour contrainte d’appartenir
# au domaine virtual.fr
# Le NONE veut dire qu'on utilise aucun protocole de sécurité
AuthLDAPBindDN ldap@virtual.fr
# définit le login du compte de test 
AuthLDAPBindPassword motpasse
# et là son mot de passe
require valid-user
# pour finir nous acceptons d’afficher le site si seulement l’utilisateur entré est valide.

Voilà. Si vous ne voulez pas vous embêter avec les sessions utilisateurs ou si l’espace est réservé aux personnes enregistrées dans votre annuaire, cette méthode s’avère assez simple à mettre en place. Vous pouvez aussi ajouter différentes contraintes comme le groupe, le poste de travail à utiliser, …