Table des matières
LDAP
LDAP est un protocole d'accès à une base de données hiérarchique. Pour faire simple, on l'utilise généralement comme annuaire. Contrairement à SQL, ce n'est pas un langage de programmation mais un protocole, spécifiant aussi bien le format de la base de données et la syntaxe des requêtes que le protocole de communication sur IP (préfixe ldap://
). Sa définition se trouve dans des RFC.
Son modèle de données est approprié pour un annuaire de personnes, des comptes UNIX ou encore pour des zones DNS. L'avantage de la standardisation du protocole est qu'il est supporté par beaucoup d'applications aujourd'hui.
Les cas d'utilisations possibles pour une association sont nombreux :
- authentification sur un service web (ce wiki en est un exemple)
- authentification pour un réseau wifi
- carnet d'adresses centralisé pour des clients mails
- alias email
Cette page présente ce qu'il faut savoir sur LDAP et son serveur libre le plus répandu : OpenLDAP.
LDAP (protocole)
Documentation utile :
- Description générale : LDAP
- Guide pour débutants : http://www.zytrax.com/books/ldap/
OpenLDAP
Le serveur est fourni par le paquet Debian slapd et quelques outils par ldap-utils :
aptitude install slapd ldap-utils
Sur un serveur bien configuré, l'installation ne demande qu'un mot de passe administrateur et résulte en deux hiérarchies dont voici un extrait :
cn=config ├ cn=admin ├ olcDatabase={0}config └ olcDatabase={1}hdb dc=example,dc=org └ cn=admin
La configuration dynamique, aussi appelée slapd.d ou real-time configuration, est située dans /etc/ldap/slapd.d
au format texte (à ne pas modifier à la main). La base principale est dans /var/lib/ldap
au format HDB. Il est possible de créer d'autres bases sur le même serveur.
Comme l'indique le README Debian (/usr/share/doc/slapd/README.Debian.gz
), la configuration du serveur cn=config
est modifiable par l'utilisateur root avec la méthode d'authentification EXTERNAL sur l'interface socket unix ldapi:///
. La base installée automatiquement, dc=example,dc=org
, est gérée par le compte administrateur cn=admin,dc=example,dc=org
dont le mot de passe a été choisi lors de l'installation.
L'utilisateur root, en plus de l'accès EXTERNAL via le protocole LDAP avec les commandes ldap*
, peut utiliser les commandes slap*
. Ces dernières agissent localement sur les bases sans passer par LDAP. Elles permettent notamment d'effectuer certaines tâches de maintenance ou de réparer le serveur lorsque celui-ci est cassé.
Commandes utiles :
ldap* (via protocole LDAP) : ldapmodify : applique une modification à une base à partir d'un fichier LDIF ldapsearch : retourne les entrées d'une base correspondant à une requête ldappasswd : change le mot de passe d'un utilisateur ldapwhoami : retourne le DN authentifié slap* (direct) : slapadd : ajoute des entrées à une base à partir d'un fichier LDIF slapcat : retourne un dump d'une base au format LDIF slappasswd : génère un hash compatible avec OpenLDAP
Les commandes ldapadd
et ldapdelete
sont des cas particuliers de ldapmodify
. Utiliser la sortie d'une commande slap*
en entrée d'une ldap*
ou inversement sans adaptation est généralement une mauvaise idée (voir le man) malgré le format LDIF commun aux deux types de commandes. Enfin, slapadd
est plus dangereux que ldapmodify
car moins de vérifications de cohérence sont faites.