LDAP : Protocole ou normalisation des systèmes d’annuaires informatiques
LDAP est souvent présenté comme un protocole de communication pour joindre un annuaire informatique. Mais il est devenu en fait bien plus que ça. En effet, bien qu’à l’origine il fut créé pour être une amélioration (en fait un "allègement" d’où Lightweight en anglais) du protocole existant de l’époque DAP, il est maintenant désigné comme norme pour les systèmes d’annuaires au travers des RFC4510 à RFC4519 définissant des modèles (de structure, de nommage, de sécurité), permettant ainsi de constituer son annuaire informatique de manière moins complexe que le modèle de l’époque nommé X.500 normalisé par l’UIT-T.
LDAP est un protocole de niveau 5 du modèle de communication OSI qui s’appuie sur les protocoles de couches basses « TCP/IP ». Il est donc orienté « connexion » et doit en ce sens établir une communication avec le serveur LDAP afin d’échanger des données. LDAP, comme tout protocole, est défini par un ensemble d’opérations réalisées entre le client et le serveur, mais aussi par le contenu de ces messages définissant l’organisation logique de l’annuaire. Ainsi, la nature des actions peut être initiée par le client (c’est-à-dire la recherche, la modification et la suppression), par les réponses du serveur et également par des opérations de connexion/déconnexion de session entre le client et le serveur.
Toutefois, le protocole LDAP ne se résume pas seulement à la nature des opérations réalisées entre un client et un serveur, car il possède également un modèle logique qui permet de structurer et d’organiser les informations de manière simple et optimisée. Il garantit également une protection d’accès aux données de l’annuaire en fonction de l’utilisateur initiant une session de communication avec le serveur LDAP.
La communication générale entre un client et un serveur LDAP peut être schématisée comme suit :
1.	Le client établit une session avec un serveur LDAP. C’est ce qu’on appelle la liaison au serveur ou l’opération de bind. Le client spécifie ainsi le nom d’hôte ou l’adresse IP suivi du numéro de port TCP/IP sur lequel le serveur LDAP écoute.	
2.	Le client peut fournir un nom d’utilisateur et un mot de passe pour s’authentifier correctement avec le serveur ou le client peut établir une session anonyme avec des droits d’accès par défaut. Le client et le serveur peuvent également créer une session qui utilise des méthodes de sécurité plus fortes telles que le cryptage des données.	
3.	Le client effectue alors des opérations sur les données d’annuaire. LDAP offre des fonctionnalités de lecture et de mise à jour (écriture) permettant ainsi de gérer les informations contenues dans l’annuaire. LDAP prend également en charge la recherche de données dans le répertoire, répondant aux critères spécifiés par l’utilisateur. La recherche est une opération très courante dans LDAP. On peut ainsi, par exemple, indiquer la partie du répertoire à rechercher et les informations à retourner ou encore utiliser un filtre de recherche qui utilise des conditions booléennes pour ne retourner que les données souhaitées.	
4.	Lorsque le client cesse ses requêtes, il ferme la session avec le serveur. Cette opération est également appelée unbind.	
Un annuaire LDAP suit donc le modèle défini par la norme X.500. Ainsi, il se structure de manière hiérarchique à l’image d’un arbre partant du tronc jusqu’à ses feuilles en passant par ses branches. Cet arbre dans le contexte d’annuaire informatique se nomme l’arbre d’information de l’annuaire (DIT). Et chaque ramification de l’arbre peut être identifiée à une entrée de l’annuaire dans laquelle des informations seront stockées. Ainsi, une entrée d’annuaire décrit habituellement un objet tel qu’une personne, un périphérique, un emplacement géographique ou une organisation au sein d’une entreprise. Chaque entrée est identifiée par un nom unique appelé : nom distinctif (DN). Celui-ci se compose d’une séquence de parties appelées noms distincts relatifs (RDN), tout comme un fichier présent au sein d’un système de fichiers de systèmes d’exploitation tels qu’Unix ou Windows.
Afin de renseigner des informations dans une entrée, il faut que celle-ci contienne la nature et le format des informations à accueillir. Ce format pourra être défini par un ou plusieurs attributs configuré(s) dans l’entrée de l’annuaire. Chaque attribut possède un type et une valeur. Par exemple, une entrée de l’annuaire créée pour y contenir les informations concernant une personne de l’entreprise peut disposer d’un attribut appelé numéro téléphonique ou bien un autre pour y renseigner son année de naissance. Il faudra donc que la syntaxe de l’attribut numéro téléphonique puisse être en mesure d’accueillir une chaîne de nombres pouvant aussi contenir des espaces et des traits d’union. La valeur de l’attribut pourrait être par exemple : 06-07-XX-XX-23.
Cependant, lors de la création d’une entrée dans l’annuaire, les attributs ne sont pas à spécifier un à un, car cela serait trop contraignant dans le cas par exemple de la saisie d’un utilisateur possédant des centaines d’informations. Ainsi, les attributs sont définis dans une ou plusieurs classes d’objets caractérisant donc le type de l’entrée de l’annuaire. Par conséquent, si l’entrée à créer concerne une personne, seul l’ajout de cette information (la classe d’objet person) sera nécessaire lors de la création de l’entrée... d’autres propriétés le seront également, mais cela sera détaillé ultérieurement dans ce chapitre.
L’ensemble des classes d’objets (et donc des attributs) dont un serveur d’annuaire a connaissance constitue son « schéma ». Le schéma définit donc les classes d’objets autorisées dans l’annuaire avec les attributs qu’il peut contenir et leurs syntaxes.
LDAP décrit également le type d’opérations effectuées entre un serveur et un client LDAP telles que :
	•	Connexion et déconnexion 
	•	Recherche d’entrées répondant aux critères spécifiés par l’utilisateur
	•	Ajout d’une entrée 
	•	Suppression d’une entrée 
	•	Modification d’une entrée 
	•	Modification du nom distinctif ou du nom distinctif relatif d’une entrée (déplacer) 
	•	Comparaison d’une entrée
La version de LDAP utilisée par tous les serveurs d’annuaire modernes est LDAPv3 et peut être mieux comprise en considérant les quatre modèles sur lesquels elle se base :
	•	Un modèle de stockage des informations : décrit la structure des informations stockées dans un répertoire LDAP.
	•	Un modèle d’organisation des informations (ou de nommage) : décrit comment les informations dans un annuaire LDAP sont organisées et identifiées.
	•	Un modèle fonctionnel d’accès aux informations : décrit les opérations qui peuvent être effectuées sur les informations stockées dans un annuaire LDAP.
	•	Un modèle de sécurisation et de confidentialité des informations : décrit comment les informations contenues dans un annuaire LDAP peuvent être protégées des accès non autorisés ou bien même autorisés et concerne également la façon dont les données sont protégées durant leur transmission sur le réseau.