Outils pour utilisateurs

Outils du site


doc:ldap

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 :

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.

doc/ldap.txt · Dernière modification: 2015/05/10 11:25 par bertrand.bonnefoy-claudet