Vous êtes sur la page 1sur 8

Lightweight Directory Access Protocol

Lightweight Directory Access Protocol (LDAP) est l'origine un protocole permettant l'interrogation et la modification des services d'annuaire. Ce protocole repose sur TCP/IP. Il a cependant volu pour reprsenter une norme pour les systmes d'annuaires, incluant un modle de donnes, un modle de nommage, un modle fonctionnel bas sur le protocole LDAP, un modle de scurit et un modle de rplication. Un annuaire LDAP respecte gnralement le modle X.500 dict par l'UIT-T : c'est une structure arborescente dont chacun des nuds est constitu d'attributs associs leurs valeurs. Le nommage des lments constituant l'arbre (racine, branches, feuilles) reflte souvent le modle politique, gographique ou organisationnel de la structure reprsente. La tendance actuelle est d'utiliser le nommage DNS pour les lments de base de l'annuaire (racine et premires branches, domain components ou dc=). Les branches plus profondes de l'annuaire peuvent reprsenter des units organisationnelles ou des groupes (organizational units ou ou=), des personnes (common name ou cn= voire user identifier uid=), L'assemblage de tous les composants (du plus prcis au plus gnral) d'un nom forme son distinguished name, l'exemple suivant en prsente deux :

cn=ordinateur,ou=machines,dc=EXEMPLE,dc=FR cn=Jean,ou=gens,dc=EXEMPLE,dc=FR dc=FR | dc=EXEMPLE

/ ou=machines / cn=ordinateur

\ ou=gens \ cn=Jean

La dernire version en date du protocole est LDAPv3. Cette version est dfinie par l'IETF dans plusieurs RFC en commenant par la RFC 4510.
Sommaire

1 Origine et influences 2 Vue d'ensemble 3 Structure de l'annuaire 4 Oprations o 4.1 Bind (authentification) o 4.2 StartTLS o 4.3 Search et Compare o 4.4 Mise jour o 4.5 Oprations tendues

o
5 URI

4.5.1 Abandon 4.6 Unbind

6 Schma 7 Utilisation o 7.1 Serveurs LDAP o 7.2 Clients LDAP

Origine et influences
LDAP a t initialement conu pour tre une alternative lgre pour accder aux annuaires X.500. Ces annuaires taient traditionnellement interrogs travers le protocole X.500 Directory Access Protocol (DAP) qui ncessitait l'utilisation de la pile de protocoles du modle OSI. L'utilisation d'une passerelle LDAP/DAP permettait d'accder un serveur DAP en tant sur un rseau TCP/IP. L'apparition d'annuaires LDAP natifs (standalone LDAP directory) a suivi rapidement, tout comme celle de serveurs prenant en charge la fois DAP et LDAP. Les annuaires sont devenus populaires dans les entreprises car il n'tait plus ncessaire de dployer un rseau OSI. De nos jours, les protocoles d'accs aux annuaires X.500 peuvent tre directement utiliss sur TCP/IP. LDAP a influenc un certain nombre de protocoles d'Internet, incluant les dernires versions de X.500 : XML Enabled Directory (XED), Directory Services Markup Language (DSML), Service Provisioning Markup Language (SPML), et Service Location Protocol (SLP).

Vue d'ensemble
Un client dbute une session LDAP en se connectant sur le port TCP 389 du serveur. Le client envoie ensuite des requtes d'opration au serveur. Le serveur envoie des rponses en retour. part quelques exceptions, le client n'a pas besoin d'attendre de rponse du serveur pour envoyer de nouvelles requtes, et le serveur peut envoyer ses rponses dans n'importe quel ordre. Une fois la connexion au serveur tablie, les oprations classiques sont :

Start TLS : utilisation de la couche Transport Layer Security (TLS) pour scuriser la connexion ; Bind : indique la version du protocole utilise, et authentifie l'utilisateur. Il est possible de faire un bind anonyme en ne fournissant ni nom d'utilisateur ni mot de passe ; Search : recherche dans l'annuaire et rapatriement des donnes ; Compare : test qui dtermine si une entre contient un attribut avec une valeur donne ; Add : ajout d'une nouvelle entre ; Delete : suppression d'une entre ; Modify : modification d'une entre ; Modify DN : dplacement ou renommage d'une entre ; Abandon : annulation d'une requte prcdente ; Extended Operation : opration qui permet de dfinir d'autres oprations ; Unbind : clture la connexion.

Une mthode pour scuriser les communications LDAP est d'utiliser un tunnel TLS/SSL. Lors de l'emploi d'URL cet usage est traduit par le nom du protocole ldaps en remplacement de ldap. Le port TCP/IP standard pour ldaps est 636.

Structure de l'annuaire
Les annuaires LDAP suivent le modle X.500 : Un annuaire est un arbre d'entres. Une entre est constitue d'un ensemble d'attributs. Un attribut possde un nom, un type et une ou plusieurs valeurs. Les attributs sont dfinis dans des schmas. Le fait que les attributs puissent tre multi-valus est une diffrence majeure entre les annuaires LDAP et les SGBDR. De plus, si un attribut n'a pas de valeur, il est purement et simplement absent de l'entre. Chaque entre a un identifiant unique, le Distinguished Name (DN). Il est constitu partir de son Relative Distinguished Name (RDN) suivi du DN de son parent. C'est une dfinition rcursive. On peut faire l'analogie avec une autre structure

arborescente, les systmes de fichiers ; le DN tant le chemin absolu et le RDN le chemin relatif un rpertoire. En rgle gnrale le RDN d'une entre reprsentant une personne est l'attribut uid :

dc=org | dc=example / ou=people | uid=toto \ ou=groups

Le RDN de toto est rdn:uid=toto, son DN est dn:uid=toto,ou=people,dc=example,dc=org. Une entre peut ressembler la reprsentation suivante lorsqu'elle est formate en LDIF :

dn: cn=John Doe,dc=example,dc=org cn: John Doe givenName: John sn: Doe telephoneNumber: +1 555 6789 telephoneNumber: +1 555 1234 mail: john@example.com manager: cn=Barbara Doe,dc=example,dc=com objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person objectClass: top
dn est le nom de l'entre, ce n'est pas un attribut de l'entre. "cn=John Doe" est le RDN de l'entre et "dc=example,dc=org" est le DN de son parent. Les autres lignes montrent les attributs de l'entre. Les noms des attributs sont parfois des abrviations pour les plus courants : "cn" pour common name, "dc" pour domain component, "sn" pour surname. Un serveur contient un sous-arbre dont la racine est une entre spcifique et tous ses enfants, par exemple : "dc=example,dc=org". Les serveurs peuvent galement contenir des rfrences vers d'autres serveurs, ainsi l'accs une entre ("ou=un service,dc=example,dc=org") peut retourner une rfrence (referral) un autre serveur qui contient le sousarbre voulu. Le client peut alors contacter (automatiquement ou pas) l'autre serveur. Certains serveurs prennent en charge le chanage (chaining) qui permet au serveur d'interroger d'autres serveurs pour renvoyer l'information voulue au client. Les rsultats renvoys par le serveur ne sont pas tris, que ce soit pour les entres, pour les attributs des entres ou pour les valeurs des attributs.

Oprations
Le client donne chaque requte un identifiant Message ID, le serveur rpond la requte avec le mme identifiant. La rponse inclut un code de rsultat numrique indiquant l'tat de la requte (succs, chec, ). La rponse inclut galement les donnes ventuelles qui peuvent rsulter d'une recherche. Il inclut aussi un code ID.

Bind (authentification)
L'opration bind authentifie le client au sein du serveur. Le simple bind envoie le DN de l'utilisateur et son mot de passe en clair, c'est pourquoi la connexion doit tre scurise par TLS. Le serveur vrifie le mot de passe en le comparant avec l'attribut userPassword (en gnral) de l'entre correspondante. La valeur de l'attribut contenant le mot de passe commence avec le nom entre accolades de l'algorithme utilis pour coder le mot de passe (par exemple : userPassword: {md5}aGZh5).

Le bind anonyme, c'est--dire sans fournir d'identifiant ni de mot de passe, met la connexion dans un tat anonyme. Ds lors le client ne pourra plus effectuer certaines oprations sur tout ou une partie de l'annuaire. Le SASL bind permet d'utiliser d'autres mcanismes d'authentification : Kerberos, certificat client, etc. L'tape de bind permet galement au client et au serveur de se mettre d'accord sur la version du protocole utiliser. En gnral la version 3 est utilise. Il est mme possible au serveur de refuser de communiquer avec des clients dans un protocole infrieur au sien.

StartTLS
L'opration StartTLS tablit une connexion scurise entre le client et le serveur en utilisant la technique TLS, hritier de SSL. Cette scurisation opre sur deux points : la confidentialit (un tiers ne peut pas comprendre l'change) et l'intgrit des donnes (les donnes sont valides par une signature). Pendant la ngociation TLS, le serveur envoie son certificat X.509 au client pour prouver son identit. Le client peut rpondre en envoyant son certificat mais l'identification du client est facultative. Il est gnralement possible de configurer clients et serveurs pour savoir si les certificats sont facultatifs ou essentiels.

Search et Compare
L'opration Search est utilise la fois pour faire une recherche et rapatrier des entres. Ses paramtres sont :

baseObject : le DN (Distinguished Name) de l'entre partir de laquelle effectuer la recherche ; scope : base pour l'entre baseObject elle-mme, one pour effectuer une recherche au niveau des entres immdiatement rattaches au baseObject, sub pour une recherche dans le sous-arbre de l'entre ; filter : les critres qui dterminent si une entre fait partie des rsultats ou non, par exemple (&(objectClass=person)(|(givenName=John)(mail=john*))) - recherche les personnes qui ont pour prnom John ou dont le courriel commence par john ; derefAliases : indique si la recherche doit suivre les alias dans les entres (entre qui font rfrence d'autres entres) ; attributes : liste des attributs ramener l'issue de la recherche ; sizeLimit : limitation du nombre d'entres ramenes l'issue de la recherche ; timeLimit : limitation du dlai de recherche, exprim en secondes ; typesOnly : ne renvoie que les types d'attribut et non les valeurs.

Le serveur renvoie les entres qui correspondent, suivies par le code retour de la commande (code de retour). L'opration Compare prend en argument un DN, un nom d'attribut et une valeur d'attribut, puis vrifie si l'entre correspondante contient bien un attribut ayant cette valeur.

Mise jour
Les oprations de mise jour Add (ajout), Delete (suppression), Modify (modification) prennent en argument le DN de l'entre mettre jour. La modification a besoin en plus de la liste des attributs modifier ainsi que la modification apporter : suppression de l'attribut ou de certaines valeurs de l'attribut (les attributs peuvent tre multi-valus), ajout d'une valeur, remplacement d'une valeur. L'ajout d'une entre peut galement contenir une liste d'attributs et de valeurs associer avec l'entre. La modification de DN (dplacement/renommage) prend en argument le RDN de l'entre et, de faon facultative, le DN du nouveau parent, ainsi qu'un marqueur qui indique s'il faut ou non effacer l'ancien RDN. Une opration de mise jour est atomique, c'est--dire que les autres oprations verront soit la nouvelle entre soit l'ancienne. Toutefois, le protocole LDAP ne dfinit pas de principe de transaction, ce qui permet plusieurs clients de modifier une entre en mme temps.

Oprations tendues
Les oprations tendues sont des oprations gnriques qui permettent de dfinir de nouvelles oprations. Par exemple les oprations Cancel, Password Modify et StartTLS.

Abandon
L'opration Abandon envoie une requte au serveur pour lui dire d'abandonner une opration en lui fournissant son identifiant. Le serveur n'a pas obligation d'honorer la requte. Malheureusement, l'opration Abandon ainsi que l'abandon effectif d'une opration renvoie une rponse. C'est pourquoi l'opration tendue Cancel a t dfinie, pour ne pas renvoyer de rponse, mais tous les serveurs ne la prennent pas en charge.

Unbind
L'opration Unbind abandonne toute opration en cours et ferme la connexion. Il n'y a aucune rponse. Ce n'est pas l'opration contraire Bind. Les clients peuvent terminer une session en fermant la connexion, mais il est plus propre d'utiliser Unbind.

URI
Il existe un format d'URI LDAP, mais tous les clients ne le prennent pas en charge. Les serveurs l'utilisent pour indiquer aux clients les rfrences vers d'autres serveurs. Le format est le suivant :

ldap://hte:port/DN?attributs?profondeur?filtre?extension
avec :

DN : le DN partir duquel effectuer la recherche ; attributs : liste contenant les attributs renvoyer, spars par des virgules ; profondeur : base (par dfaut), one ou sub pour la profondeur de la recherche ; filtre : le filtre de recherche ; extension : extensions ventuelles du format d'URL LDAP.

Comme dans tous les URI, les caractres spciaux doivent tre chapps en suivant l'algorithme prvu par la RFC 3986. On peut aussi rencontrer des URI utilisant le schma non normalis ldaps . Par exemple :

ldap://ldap.example.com/cn=John%20Doe,dc=example,dc=com
retourne tous les attributs de l'entre John Doe ,

ldap:///dc=example,dc=com??sub?(givenName=John)
recherche l'entre ayant comme prnom John dans l'annuaire partir de la racine.

Schma
Le contenu des entres d'un annuaire LDAP est rgi par des schmas. Les schmas dfinissent les types d'attribut que les entres d'un annuaire peuvent contenir. La dfinition d'un attribut inclut une syntaxe, la plupart des attributs non binaires dans LDAPv3 utilisent la syntaxe des chanes de caractres UTF-8. Par exemple, l'attribut mail peut contenir "utilisateur@example.org", l'attribut jpegPhoto peut contenir une photographie au format binaire JPEG, l'attributmember peut contenir le DN d'une entre de l'annuaire. La dfinition d'un attribut indique galement si l'attribut est mono-valu ou multi-valu, selon quelles rgles se feront les recherches/comparaisons (sensible la casse ou pas, recherche de sous-chane ou pas). Les schmas dfinissent des classes d'objets. Chaque entre de l'annuaire doit avoir au moins une valeur pour l'attribut objectClass, qui soit une classe d'objets dfinie dans les schmas. Gnralement, l'attribut objectClass est multivalu et contient la classe top ainsi qu'un certain nombre d'autres classes. Tout comme dans la programmation oriente objet, les classes permettent de dcrire un objet en lui associant des attributs. Les classes LDAP reprsentent des personnes, des organisations, Le fait qu'une entre appartienne une classe (donc que l'attribut objectClass contienne le nom de la classe) lui permet d'utiliser les attributs de cette classe. Certains attributs sont obligatoires et d'autres facultatifs. Par exemple, si l'entre utilise la classe person, elle doit avoir obligatoirement une valeur pour les attributs sn et cn, et peut avoir facultativement une valeur pour les attributs userPassword ettelephoneNumber. Les entres ayant gnralement plusieurs classes, la diffrenciation entre attributs obligatoires et facultatifs peut tre assez complexe. Les lments d'un schma ont un nom et un identifiant unique nomm Object identifier (OID).

Utilisation
L'intrt principal de LDAP est la normalisation de l'authentification. Il est trs facile de programmer un module d'authentification utilisant LDAP partir d'un langage possdant une API LDAP. C'est l'opration Bind qui permet d'authentifier un utilisateur. De plus en plus d'applications Web possdent un module d'authentification prenant en charge LDAP. Sur les systmes GNU/Linux rcents, on voit de plus en plus l'adoption d'une base de donnes utilisant LDAP la place des fichiers plat passwd et shadow. Les donnes peuvent tre accdes par les modules PAM et NSS.

Serveurs LDAP
Apache Directory Server Open Directory d'Apple Critical Path Directory Server et Meta Directory Server 389 Directory Server Red Hat Directory Server OpenLDAP

Clients LDAP
Jxplorer : un client dvelopp sous Java et donc indpendant du systme d'exploitation. LDAPBrowser : un client dvelopp sous Java et donc indpendant du systme d'exploitation. LDAP Admin : un autre client pour Windows Apache Directory Studio : un client multiplateforme, dvelopp en Java, par Apache Software Foundation GQ : un client dvelopp en GTK+/GTK2 sous licence GPL pour GNU/Linux

OpenLDAP
Sommaire

1 Concept 2 Aspects techniques o 2.1 Stockage o 2.2 Rplication o 2.3 Composants d'OpenLDAP o 2.4 Composant obsolte : slurpd 3 Composants tiers o 3.1 PhpLDAPadmin o 3.2 Apache Directory Studio

Concept
OpenLDAP est une implmentation libre du protocole LDAP dveloppe par The OpenLDAP Project. OpenLDAP est un annuaire informatique qui fonctionne sur le modle client/serveur. Il contient des informations de n'importe quelle nature qui sont ranges de manire hirarchique. Pour bien comprendre le concept, il est souvent compar aux Page Jaunes (Yellowpages), o le lecteur recherche un numro de tlphone particulier: il va d'abord slectionner la profession, puis la ville, puis le nom de l'entre pour trouver au final le numro de tlphone. En pratique, il est utilis pour enregistrer une grande quantit d'utilisateurs ou de services (parfois des centaines de milliers) dans un rseau informatique. Il permet d'organiser hirarchiquement les utilisateurs par dpartement, par lieu gographique ou par n'importe quel autre critre. C'est une alternative libre Microsoft Active Directory.

Aspects techniques
Stockage
Le logiciel OpenLDAP ne stocke pas les donnes directement, il utilise une bibliothque tierce pour le faire. Gnralement c'est la base de donnes Berkeley DB qui est utilise sous GNU/Linux. Mais il est possible d'utiliser MySQL, LDBM, des fichiers plat, etc.

Rplication
OpenLDAP prend en charge le mcanisme de rplication, via une directive de configuration syncrepl

Composants d'OpenLDAP
OpenLDAP est constitu de 3 lments principaux :

slapd (Stand-alone LDAP Daemon): dmon LDAP autonome. Il coute les connexions LDAP sur n'importe quel port (389 par dfaut) et rpond aux oprations LDAP qu'il reoit via ces connexions. Typiquement, slapd est appel au moment du boot. des bibliothques implantant le protocole LDAP. des utilitaires, des outils et des exemples de clients.

Composant obsolte : slurpd


Les versions anciennes d'openLDAP utilisaient le composant slurpd, ce composant est devenu obsolte. Une directive de configuration syncrepl (rplication synchronise) permet de configurer le daemon slapd pour effectuer aussi la rplication de(s) annuaire(s) par un mcanisme dit de pull replication (le destinataire tire l'information vers lui).

slurpd (Stand-alone LDAP Update Replication Daemon): dmon de mise jour autonome. Est utilis pour propager les changements effectus dans une base de donnes slapd aux autres bases. Sislapd est configur pour produire des log de rplication, slurpd lit ces journaux et envoie les changements aux instances slapd esclaves (dpendantes de l'instance principale, dite matresse) via le protocole LDAP. Cette technique est dite de push replication (le daemon pousse l'information vers le destinataire)

La dernire version d'OpenLDAP est :

OpenLDAP Version 2.4 (octobre 2007) : rplication miroir et multi-matre; rplication Proxy Sync; extensions LDAP v3.

Composants tiers
PhpLDAPadmin
PhpLDAPadmin est une interface en PHP qui facilite l'dition des donnes du serveur OpenLDAP. Son utilisation passe par un navigateur Web.

Apache Directory Studio


Apache Directory Studio est une interface en Java bas sur Eclipse. Permet de grer l'architecture LDAP, les Schma LDAP et les fichiers LDIF.

Vous aimerez peut-être aussi