Authentification LDAP avec Apache
Je me suis retrouvé dans la nécessité de configurer un serveur Apache 2.2 (sous debian) pour qu’il puisse puiser sa liste d’utilisateurs dans un serveur LDAP, que j’utilise aussi pour authentifier mes utilisateurs FTP, SSH, Jabber, etc, et donc j’utilise des objectClass faites pour PAM (ce qui est le cas de la plupart des serveurs LDAP je pense…).
Donc me voici dans une section <Directory>, je configure maintenant Apache pour authentifier les utilisateurs à l’aide de LDAP.
## On donne l'url du serveur LDAP. Syntaxe : ldap://serveur:port/base_dn?attribu_a_verrifier?profondeur_de_recherche?filtre_de_recherche AuthLDAPURL ldap://localhost/dc=thegreatspirit,dc=net?uid?sub?(objectClass=*) ## On spécifie à Apache que l'attribu qui contient le nom d'utilisateur est "memberUid" AuthLDAPGroupAttribute memberUid ## Et on spécifie aussi que c'est le uid qui est stocké, au lieu que ce soit le DN complet AuthLDAPGroupAttributeIsDN off ## Maintenant on lance une fenêtre d'authentification AuthType basic ## Nom de la fenêtre d'authentification AuthName "Restrited LDAP-protected area" ## On indique à Apache de regarder dans LDAP pour la liste des utilisateurs AuthBasicProvider ldap #On veut un utilisateur qui provient du groupe dont le DN est cn=svnUser,ou=SVN,ou=ACL,ou=Groups,dc=thegreatspirit,dc=net Require ldap-group cn=svnUser,ou=SVN,ou=ACL,ou=Groups,dc=thegreatspirit,dc=net ## On aurai aussi pu tenter : ## Une liste d'utilisateurs # Require ldap-user user1 user2 etc ## Une liste de DNs # Require ldap-dn DN1 DN2 etc ## N'importe quel DN avec certains attribus # Require ldap-attribute attribut="valueur" attribut="valeur" etc ## Ou si le DN passe à travers ce filtre # Require ldap-filter (filtre ldap)
Si on avait voulu que n’importe quel utilisateur qui a réussi à faire un bind correct puisse se connecter, il faut d’abord que mod_authz_user soit chargé, et que l’option AuthzLDAPAuthoritative soit à off. Ainsi on peut remplacer le require de la configuration précédente par
AuthzLDAPAuthoritative off Require valid-user
Bien sûr, les noms d’utilisateurs, DN etc peuvent être entré comme n’importe quel chaine en argument dans un fichier de apache : c’est à dire qu’on peut les mettre comme sans rien, ou si on a besoin de délimiter la chaîne on peut la mettre entre guillemets.
Et ausis, Apache n’a pas besoin de pouvoir voir les mots de passes sur LDAP, puisque quand un nom d’utilisateur sera rentré il tentera un bind avec.
2 comments January 14th, 2007