mar
22
2010
.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 :
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
| 1 | AuthName "Warning : Restricted Area !!" |
| 2 | AuthType Basic |
| 3 | AuthBasicProvider ldap |
| 4 | AuthzLDAPAuthoritative off |
| 5 | AuthLDAPURL "ldap://serveur.virtual.fr:389/DC=virtual,DC=fr?sAMAccountName?sub?(objectClass=*)" NONE |
| 6 | AuthLDAPBindDN "ldap@virtual.fr" |
| 7 | AuthLDAPBindPassword motpasse |
| 8 | require valid-user |
Donc je vais expliquer chaque ligne :
| 1 | AuthName "Warning : Restricted Area !!" |
| 2 | #définit le message qui s’affichera sur notre fenêtre de connexion |
| 1 | AuthType Basic |
| 2 | #nous définissons une authentification dite basique |
| 1 | AuthBasicProvider ldap |
| 2 | #nous demandons de passer par les annuaires LDAP |
| 1 | AuthzLDAPAuthoritative off |
| 2 | #permet de dire que nous n’utilisons pas de certificat |
| 3 | #particulier lors de la requête dans Active Directory |
| 1 | AuthLDAPURL "ldap://serveur.virtual.fr:389/DC=virtual,DC=fr?sAMAccountName?sub?(objectClass=*)" NONE |
| 2 | #url utilisée pour aller effectuée notre requête. Nous demandons d’aller vérifier le nom de compte |
| 3 | #à partir de n’importe quelle classe d’objet de notre annuaire mais ayant pour contrainte d’appartenir |
| 4 | #au domaine virtual.fr |
| 5 | #Le NONE veut dire qu'on utilise aucun protocole de sécurité |
| 1 | AuthLDAPBindDN ldap@virtual.fr |
| 2 | #définit le login du compte de test |
| 1 | AuthLDAPBindPassword motpasse |
| 2 | #et là son mot de passe |
| 1 | require valid-user |
| 2 | #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, …