Objectif: Dans ce 6eme article de la série « OpenLDAP Tutorial », nous allons alimenter l’annuaire avec des données utiles. Ceci permettra d’utiliser réellement le serveur OpenLDAP. Un prochain article détaillera un exemple concret d’utilisation de cet annuaire. Il sera présenté pas à pas la manière de restreindre l’accès à un site web (Internet ou Intranet) à des utilisateurs authentifiés. Pré-requis:
- OpenlDAP est installé et pré-configuré sur une machine Debian, Ubuntu ou compatible. Voir les articles Installation et configuration de base ainsi que Modifier les paramètres par défaut.
- L’administrateur du serveur a les droits de modification sur la configuration dynamique. Voir l’article Accès à la configuration dynamique par l’administrateur.
- La notion de type de données au sens OpenLDAP est comprise. Voir l’article OpenLDAP – Organisation et types de données.
1. Création d’un nœud pour les personnes.
Un annuaire se doit d’être organisé. Dans un soucis d’organisation, on va d’abord créer un nœud (conteneur) qui recevra les entrées annuaire des personnes. Créer un fichier LDIF pour ce nœud:vi people.ldifSaisir dans l’éditeur, puis enregistrer:
dn: ou=People,dc=ldaptuto,dc=net objectClass: organizationalUnit ou: People
- People est un nom au choix.
- Le type de cette nouvelle entrée est organizationalUnit (OU), c’est le type usuel des nœuds conteneurs dans OpenLDAP.
- OpenLDAP n’est pas sensible à la casse et ne fait pas de différence entre majuscules et minuscules, people ou People sont équivalents.
ldapmodify -a -x -H ldap://localhost -D cn=admin,dc=ldaptuto,dc=net -w admin -f people.ldif-a (pour add) après ldapmodify veut dire qu’on souhaite ajouter le contenu du fichier.
2. Ajouter des personnes à l’annuaire
vi dupond.ldifSaisir dans l’éditeur, puis enregistrer:
dn: uid=dupond,ou=People,dc=ldaptuto,dc=net objectClass: inetOrgPerson givenName: Jean sn: Dupond cn: Jean Dupond uid: dupond userPassword: dupondOn ajoute cette entrée à l’annuaire:
ldapmodify -a -x -H ldap://localhost -D cn=admin,dc=ldaptuto,dc=net -w admin -f dupond.ldifEt on vérifie cet ajout:
ldapsearch -x -H ldap://localhost -D cn=admin,dc=ldaptuto,dc=net -w admin -b ou=People,dc=ldaptuto,dc=netRemarquer que le mot de passe a été crypté et même l’administrateur ne peut plus le voir en claire.
3. Utilisation
Regardons maintenant ce qui se passe si Jean Dupond essaye de se connecter à l’annuaire et voir les personnes référencées (entre autres lui même).ldapsearch -x -H ldap://localhost -D uid=dupond,ou=people,dc=ldaptuto,dc=net -w dupond -b ou=people,dc=ldaptuto,dc=net -LLL ldap_bind: Invalid credentials (49)Rappel:
- -D : dn de l’utilisateur qui s’authentifie, la requête utilise les droits de lecture de cet utilisateur.
- -w : Mot de passe de cet utilisateur.
vi acces.ldifSaisir dans l’éditeur, puis enregistrer:
dn: olcDatabase={1}hdb,cn=config changeType: modify add: olcAccess olcAccess: to * by users read by anonymous auth by * noneCette commande ajoute une autorisation d’authentification (by anonymous auth) et de lecture à toutes les personnes de l’annuaire. Bien entendu il n’est pas conseillé d’utiliser une telle configuration dans la réalité. Elle n’est utilisée ici que pour des raisons de simplification de la démonstration. On lance cette commande de configuration de l’annuaire:
ldapmodify -x -H ldap://localhost -D cn=admin,dc=ldaptuto,dc=net -w admin -f acces.ldifMaintenant une requête de lecture des données des personnes de l’annuaire par Jean Dupond (la même que la précédente) permet de les afficher.
ldapsearch -x -H ldap://localhost -D uid=dupond,ou=people,dc=ldaptuto,dc=net -w dupond -b ou=people,dc=ldaptuto,dc=net -LLL dn: ou=People,dc=ldaptuto,dc=net objectClass: organizationalUnit ou: People dn: uid=dupond,ou=People,dc=ldaptuto,dc=net objectClass: inetOrgPerson givenName: Jean sn: Dupond cn: Jean Dupond uid: dupond userPassword:: e1NTSEF9Umk1d0QrWEtmNHRrSHBOelBEMkdqU3NNSUhtRmtNU28=Finalement l’annuaire servi par OpenLDAP permet à Jean Dupond, qui y est référencé, de s’authentifier et de lire toutes les données qu’il contient. A tire d’exercice vous pouvez ajouter une autre personne à l’annuaire: Alain Durand. Après cela le contenu de cet annuaire aura cette structure:
dc=ldaptuto,dc=net ├── cn=admin,dc=ldaptuto,dc=net └── ou=People,dc=ldaptuto,dc=net ├── uid=dupond,ou=People,dc=ldaptuto,dc=net └── uid=durand,ou=People,dc=ldaptuto,dc=net]]>