7. Les concepts de LDAP

7.1. Introduction a LDAP

LDAP (Lightweight Directory Access Protocol) est un protocole standard, ouvert, pour accéder à des bases de données. Il se place au dessus des protocoles de transport Internet (TPC/IP) et peut-être utilisé pour accéder à des serveurs autonomes ou à des bases X500. Il a été créé par l'Université du Michigan dans les années 1990. Il dérive des annuaires X500, trop complexe.

7.2. Le protocole LDAP

Le protocole LDAP est défini par les recommandations (Requests For Comments, RFC-2251) et les Internet Draft de l'IETF (Internet Engineering Task Force). Il existe trois versions du protocole LDAP.

L'annuaire OpenLDAP actuellement utilisé est la version 2.0.18, LDAPV3.

Il s'agit ici de définir comment s'établit la communication client-serveur. Le protocole fournit les commandes permettant de se connecter, se déconnecter, rechercher, comparer, créer, modifier ou détruire des enregistrements.

L'utilisation de mécanisme de chiffrement (Transport Security Layer/Secure Socket Layer) et d'authentification (Simple Authentification And Security Layer SASL), couplés à des mécanismes de contrôle d'accès permet de protéger les transactions et l'accès au données.

Le protocole définit aussi la communication serveur-serveur autorisant la synchronisation entre plusieurs serveurs, ainsi que la référence (le referral).

7.3. Le modèle de données LDAP

Un annuaire LDAP fonctionne en mode autonome (Standalone LDAP) et utilise sa propre base de données au format dbm mais peut aussi s'adapter à de nombreuses autres bases de données comme Oracle, PostgreSQL...

Ces serveurs sont donc performants pour stocker une grande quantité d'information de faible volume, y accéder en lecture rapidement. Par contre ils ne sont pas conçus pour des mises à jour lourdes et fréquentes.

Les données LDAP sont structurées dans une arborescence hiérarchique comparable au système de fichier UNIX. Chaque noeud de l'arbre correspond à une entrée de l'annuaire. Une entrée est une collection de champs appelés attributs dont la référence globale est un nom unique appelé 'Distinguished Name' (DN). Le DN est donc la référence unique de chaque enregistrement ou entrée dans la base.

Les attributs pouvant être associés à une entrée sont definis à partir d'attributs spéciaux nommés 'objectClass' qui permettent de definir un certains nombre d'attributs qui pourront être utilisés dans cette entrée de manière obligatoire ou optionnelle.

Chaque DN est non seulement la référence unique d'une entrée dans le répertoire LDAP mais contient en lui-même la position de l'entrée dans l'arborescence. Un DN est en effet composé du 'Relative Distinguished Name' ou RDN qui est le nom de l'entrée elle même, suivi des noms des entrées parentes dans l'arborescence. Ce point est important car il simplifie la gestion des clients puisqu'ils sont capables de s'adapter à un changement d'organisation de l'arbre.

Le schéma est l'ensemble des définitions relatives aux objets. Il décrit les classes d'objets, leur types d'attributs et leur syntaxes.

Un attribut est caractérisé par :


 - Un nom qui l'identifie.
 - Un Object Identifier (OID) qui l'identifie également.
 - S'il est mono ou multivalué.
 - Une syntaxe et des règles de comparaison.
 - Un indicateur d'usage (pour les applications ou pour le service directory lui-même).
 - Un format ou une limite de taille de valeur qui lui est associé.

Une classe d'objet est caractérisée par :


 - Un nom qui l'identifie.
 - Un OID qui l'identifie également.
 - Des attributs obligatoires.
 - Des attributs optionnels.
 - Un type (structurel, auxiliaire ou abstrait).

Un type structurel est un objet basique de l'annuaire (personne, groupes). Un type auxiliaire désigne un objet permettant de rajouter des informations (adresse e-mail, adresse URL). Un type abstrait désigne un objet basique de LDAP (top ou alias).

7.4. L'aspect sécurité

La nature et le nombre d'applications pouvant s'appuyer sur un annuaire LDAP nécessitent une sécurité du service et des données.

La sécurité du service passe par le fonctionnement sans interruption de l'annuaire. Pour ce faire il est nécessaire de pouvoir s'appuyer sur plusieurs serveurs possédant la même base. Le service réplication répond à cette problématique. Il consiste a recopier le contenu d'un arbre sur un autre serveur.

Cette fonction permet de répartir la charge au sein du réseau. Nous pouvons prendre en compte les avantages suivants :


 - Panne d'un serveur.
 - Coupure réseau.
 - Surcharge du service.

La sécurité et la confidentialité des données doivent prendre en compte les aspects suivants :


- Autorisation d'accès au serveur.
- Droits d'accès aux données (création, modification, consultation).

L'autorisation d'accès au serveur dépend de la méthode d'authentification :


 - Anonyme. Les possibilités doivent être limités à la consultation des données accessibles à tous.
 - Root DN authentification. C'est l'utilisateur ayant accès à toutes les données.
 - Mot de passe en clair. Le mot de passe transite par le réseau et l'utilisateur ne peut faire que ce
   que l'administrateur lui autorise.
 - Mot de passe plus SSL ou TSL. La session entre le client et le serveur est chiffrée. Le mot de passe
   ne transite plus en clair, les droits sont ceux accordés par l'administrateur.
 - SASL (Simple Authentification and Security Layer). Le système d'authentification est plus élaboré
   (Kerberos).