Qu'est ce que LDAP ?

Wikipédia explique le protocole LDAP configuré avec le port le 389 par défaut, ses implémentations serveurs et les clients connus pour parcourir ou administrer votre LDAP.

Initiation à LDAP

Installation d'OpenLDAP sur Debian

/etc/apt/sources.list :

deb cdrom:[Debian GNU/Linux 4.0 r3 _Etch_ - Official i386 NETINST Binary-1 20080218-14:15]/ etch contrib main
deb http://security.debian.org/ etch/updates main contrib
deb-src http://security.debian.org/ etch/updates main contrib
debianLDAP:/# apt-get install ldap-server ldap-client
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Note, sélection de slapd au lieu de ldap-server
Note, sélection de ldap-utils au lieu de ldap-client
Certains paquets ne peuvent être installés. Ceci peut signifier
que vous avez demandé l'impossible, ou bien, si vous utilisez
la distribution unstable, que certains paquets n'ont pas encore
été créés ou ne sont pas sortis d'Incoming.
L'information suivante devrait vous aider à résoudre la situation :
Les paquets suivants contiennent des dépendances non satisfaites :
  slapd: Dépend: libiodbc2 (>= 3.52.4) mais il n'est pas installable
         Dépend: libltdl3 (>= 1.5.2-2) mais il n'est pas installable
         Dépend: libslp1 mais il n'est pas installable
E: Paquets défectueux

Rajout dans /etc/apt/sources.list :

deb ftp://ftp.fr.debian.org/debian/ etch main non-free contrib
deb-src ftp://ftp.fr.debian.org/debian/ etch main non-free contrib

Mise à jour de la définition des paquets

debianLDAP:/# apt-get update
debianLDAP:/# apt-get install ldap-server ldap-client
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Le paquet ldap-server est un paquet virtuel fourni par| :
  slapd 2.3.30-5+etch1
Vous devez explicitement sélectionner un paquet à installer.
E: Aucun paquet ne correspond au paquet ldap-server
debianLDAP:/# apt-get install slapd
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Les paquets supplémentaires suivants seront installés| :
  libiodbc2 libldap-2.3-0 libltdl3 libperl5.8 libslp1 perl perl-base perl-modules psmisc
Paquets suggérés| :
  slpd openslp-doc libterm-readline-gnu-perl libterm-readline-perl-perl ldap-utils
Paquets recommandés| :
  perl-doc libsasl2-modules
Les NOUVEAUX paquets suivants seront installés| :
  libiodbc2 libldap-2.3-0 libltdl3 libperl5.8 libslp1 psmisc slapd
Les paquets suivants seront mis à jour| :
  perl perl-base perl-modules
3 mis à jour, 7 nouvellement installés, 0 à enlever et 4 non mis à jour.
Il est nécessaire de prendre 9007ko/9087ko dans les archives.
Après dépaquetage, 6169ko d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n]| ? O
Réception de| : 1 http://security.debian.org etch/updates/main perl-modules 5.8.8-7etch3 [2314kB]
Réception de| : 2 http://security.debian.org etch/updates/main perl 5.8.8-7etch3 [3584kB]
Réception de| : 3 http://security.debian.org etch/updates/main perl-base 5.8.8-7etch3 [760kB]
Réception de| : 4 http://security.debian.org etch/updates/main libldap-2.3-0 2.3.30-5+etch1 [266kB]
Réception de| : 5 http://security.debian.org etch/updates/main libperl5.8 5.8.8-7etch3 [527kB]
Réception de| : 6 http://security.debian.org etch/updates/main slapd 2.3.30-5+etch1 [1174kB]
Réception de| : 7 ftp://ftp.fr.debian.org etch/main libiodbc2 3.52.4-5 [164kB]
Réception de| : 8 ftp://ftp.fr.debian.org etch/main libltdl3 1.5.22-4 [169kB]
Réception de| : 9 ftp://ftp.fr.debian.org etch/main libslp1 1.2.1-6.2 [49,0kB]
9007ko réceptionnés en 38s (234ko/s)
Préconfiguration des paquets...
(Lecture de la base de données... 13073 fichiers et répertoires déjà installés.)
Préparation du remplacement de perl-modules 5.8.8-7etch1 (en utilisant .../perl-modules_5.8.8-7etch3_all.deb) ...
Dépaquetage de la mise à jour de perl-modules ...
Préparation du remplacement de perl 5.8.8-7etch1 (en utilisant .../perl_5.8.8-7etch3_i386.deb) ...
Dépaquetage de la mise à jour de perl ...
Préparation du remplacement de perl-base 5.8.8-7etch1 (en utilisant .../perl-base_5.8.8-7etch3_i386.deb) ...
Dépaquetage de la mise à jour de perl-base ...
Paramétrage de perl-base (5.8.8-7etch3) ...
Sélection du paquet libiodbc2 précédemment désélectionné.
(Lecture de la base de données... 13073 fichiers et répertoires déjà installés.)
Dépaquetage de libiodbc2 (à partir de .../libiodbc2_3.52.4-5_i386.deb) ...
Sélection du paquet libldap-2.3-0 précédemment désélectionné.
Dépaquetage de libldap-2.3-0 (à partir de .../libldap-2.3-0_2.3.30-5+etch1_i386.deb) ...
Remplacement de fichiers dans l'ancien paquet libldap2 ...
Sélection du paquet libltdl3 précédemment désélectionné.
Dépaquetage de libltdl3 (à partir de .../libltdl3_1.5.22-4_i386.deb) ...
Sélection du paquet libperl5.8 précédemment désélectionné.
Dépaquetage de libperl5.8 (à partir de .../libperl5.8_5.8.8-7etch3_i386.deb) ...
Sélection du paquet libslp1 précédemment désélectionné.
Dépaquetage de libslp1 (à partir de .../libslp1_1.2.1-6.2_i386.deb) ...
Sélection du paquet psmisc précédemment désélectionné.
Dépaquetage de psmisc (à partir de .../psmisc/psmisc_22.3-1_i386.deb) ...
Sélection du paquet slapd précédemment désélectionné.
Dépaquetage de slapd (à partir de .../slapd_2.3.30-5+etch1_i386.deb) ...
Paramétrage de libiodbc2 (3.52.4-5) ...
Paramétrage de libldap-2.3-0 (2.3.30-5+etch1) ...
Paramétrage de libltdl3 (1.5.22-4) ...
Paramétrage de libperl5.8 (5.8.8-7etch3) ...
Paramétrage de libslp1 (1.2.1-6.2) ...
Paramétrage de psmisc (22.3-1) ...
Paramétrage de perl-modules (5.8.8-7etch3) ...
Paramétrage de perl (5.8.8-7etch3) ...
Paramétrage de slapd (2.3.30-5+etch1) ...
  Creating new user openldap... done.
  Creating initial slapd configuration... done.
  Creating initial LDAP directory... done.
Starting OpenLDAP: slapd.

Installation du client LDAP et outils

debianLDAP:/# apt-get install ldap-utils
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Paquets recommandés| :
  libsasl2-modules
Les NOUVEAUX paquets suivants seront installés| :
  ldap-utils
0 mis à jour, 1 nouvellement installés, 0 à enlever et 4 non mis à jour.
Il est nécessaire de prendre 154ko dans les archives.
Après dépaquetage, 410ko d'espace disque supplémentaires seront utilisés.
Réception de| : 1 http://security.debian.org etch/updates/main ldap-utils 2.3.30-5+etch1 [154kB]
154ko réceptionnés en 0s (160ko/s)
Sélection du paquet ldap-utils précédemment désélectionné.
(Lecture de la base de données... 13355 fichiers et répertoires déjà installés.)
Dépaquetage de ldap-utils (à partir de .../ldap-utils_2.3.30-5+etch1_i386.deb) ...
Paramétrage de ldap-utils (2.3.30-5+etch1) ...

Configuration du serveur LDAP

Notes

Existe t'il un schéma idéal reconnu de tous ?

Ce site nous affirme que non !

Voici par exemple, l'utilisation de votre schéma LDAP par Mozilla Thunderbird. On y constate, qu'ils utilisent :

  • givenname pour le prénom (FirstName)
  • ??? pour la civilité : M. pour Monsieur, Mme pour Madame, Me pour Maître.

Globlement avec les exemples suivants, on constate l'utilisation de :

  • givenname : prénom
  • sn : nom
  • cn : nom complet ou à afficher
  • homePhone : téléphone domicile
  • mobile : téléphone portable
  • Bureau professionnel :
    • o : société
    • ou : service
    • title : fonction
    • telephoneNumber: téléphone
    • facsimileTelephoneNumber : fax
    • postalAdress : adresse
    • postalCode : code postal
    • l : ville
    • st : état/province/département

Vous pourrez parcourir les définitions des objets et de leurs attributs sur Ldap Schema Viewer.

Exemple d'un schéma objectClass inetOrgPerson utilisé par d'autres logiciels

Fichier LDIF (avec les données binaires tronquées)

dn: uid=totoInetOrgPerson,ou=people,o=monOrganisation,dc=devel
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
cn: cn
sn: sn
audio:: YXVkaW8=
businessCategory: businessCategory
carLicense: carLicense
departmentNumber: departmentNumber
description: description
destinationIndicator: destinationIndicator
displayName: displayName
employeeNumber: employeeNumber
employeeType: employeeType
facsimileTelephoneNumber: facsimileTelephoneNumber
givenName: givenName
homePhone: homePhone
homePostalAddress: homePostalAddress (multi$lignes)
initials: initials
internationaliSDNNumber: 046868686975
jpegPhoto:: /9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQ3....
l: l
labeledURI: labeledURI
mail: mail
manager: uid=responsableBoss,ou=people,o=monOrganisation,dc=devel
mobile: mobile
o: o
ou: ou
pager: pager
physicalDeliveryOfficeName: physicalDeliveryOfficeName
postalAddress: postalAddress (multi$lignes)
postalCode: postalCode
postOfficeBox: postOfficeBox
preferredLanguage: preferredLanguage
registeredAddress: registeredAddress (multi$lignes)
roomNumber: roomNumber
secretary:: Y249SkFDSFlNIFPDqWJhc3RpZW4gKGNuXDNEKSxvdT1wZW9wbGUsbz1uYXZpc3Rh
 LGRjPWRldmVs
seeAlso: uid=42,ou=people,o=monOrganisation,dc=devel
st: st
street: street
telephoneNumber: telephoneNumber
telexNumber: telexNumber
title: title
uid: totoInetOrgPerson
userPassword:: e01ENX1JaEJvSUg0U1c1ZSt0T0xRWXVpSXNRPT0=
userPKCS12:: OEJQUwABAAAAAAAAAAQAAAEsAAABLAAIAAMAAAAAAAAcbjhCSU0D7QpS.......
Par Thunderbird 2

Par Outlook Express 6

Par Outlook 2003

Encodage

Les données peut être exportées et importées vers des fichiers ascii, on les extensionnent .ldif

Ces fichiers LDIF (Ldap Data Interchange Format) doivent respecter l'encodage UTF8 (attribut: valeurUTF8) pour le texte et base64 (attribut:: valeurBase64) pour les données binaires. Pour convertir de latin1 vers UTF8 :

iconv -f latin1 -t utf8 monfichier > base.ldif

Import / export

Utilisez la commande slapadd ou slapcat avec slapd arrêté (/etc/init.d/ldap stop) !

Clients LDAP

  • Apache Directory Studio: un client multi plates-formes, développé en java, par Apache Software Foundation. Encore merci à la fondation Apache pour ce produit qui semble être le meilleur de cette liste : gratuit, multi-plateformes et ergonomiquement simple !
  • Jxplorer: un client développé sous Java et donc indépendant du système d'exploitation.
  • LDAP Admin: un excellent client pour Windows qui nécessite même pas d'installation !
  • LDAPBrowser: un autre client pour Windows dont l'installation m'a échoué sur un serveur TSE.
  • phpLDAPadmin.

Outils LDAP

Script de migration d'une base de donnée vers un annuaire LDAP

Programmer avec LDAP

Autres ressources LDAP