===== 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 [[https://tools.ietf.org/html/rfc4510|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 : [[wp>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.