# OpenLDAP

OpenLDAP est une implémentation libre du protocole LDAP maintenue par le projet OpenLDAP et distribuée selon les termes de la licence OpenLDAP Public Licence. Outre le code source, on trouve des versions compilées pour GNU/Linux, FreeBSD, NetBSD, OpenBSD, AIX, HP-UX, Mac OS X, Solaris, et Microsoft Windows (2000, XP).

## Concept

OpenLDAP est un annuaire informatique qui fonctionne sur le modèle client/serveur. Il contient des informations de n'importe quelle nature qui sont rangées de manière hiérarchique. Pour bien comprendre le concept, il est souvent comparé aux pages jaunes, où le lecteur recherche un numéro de téléphone particulier : il va d'abord sélectionner la profession, puis la ville, puis le nom de l'entrée pour trouver finalement le numéro de téléphone. En pratique, dans un réseau informatique, il est utilisé pour enregistrer une grande quantité d'utilisateurs ou de services, parfois des centaines de milliers. Il permet d'organiser hiérarchiquement les utilisateurs par département, par lieu géographique ou par n'importe quel autre critère. C'est une alternative libre à Microsoft Active Directory.

## Histoire

Le projet a débuté en 1998 sous l'impulsion de Kurt Zeilenga en prenant pour base les travaux de l'Université du Michigan où des chercheurs développaient le protocole LDAP.
Parmi les autres contributeurs, il y a Howard Chu et Pierangelo Masarati.

## Aspects techniques
### Stockage

Le logiciel OpenLDAP ne stocke pas les données directement, il utilise une bibliothèque tierce pour le faire. Généralement, c'est la base de données Berkeley DB qui est utilisée sous GNU/Linux. Mais il est possible d'utiliser MySQL, LDBM, des fichiers à plat, etc.

### Réplication

OpenLDAP prend en charge le mécanisme de réplication, via une directive de configuration syncrepl.

### Composants d'OpenLDAP

OpenLDAP est constitué de 3 éléments principaux :
* slapd (Stand-alone LDAP Daemon) : démon LDAP autonome. Il écoute les connexions LDAP sur n'importe quel port (389 par défaut) et répond aux opérations LDAP qu'il reçoit via ces connexions. Typiquement, slapd est appelé au moment du boot.
* des bibliothèques implémentant le protocole LDAP.
* des utilitaires, des outils et des exemples de clients.
Le projet OpenLDAP propose également des bibliothèques LDAP en Java :
* JLDAP : bibliothèque d'accès à LDAP en Java.
* JDBC-LDAP driver JDBC faisant office de pont JDBC-LDAP.

### Composant obsolète : slurpd

Les versions anciennes d'openLDAP utilisaient le composant slurpd, ce composant est devenu obsolète. Une directive de configuration syncrepl (réplication synchronisée) permet de configurer le daemon slapd pour effectuer aussi la réplication de(s) annuaire(s) par un mécanisme dit de pull replication (le destinataire tire l'information vers lui).
* slurpd (Stand-alone LDAP Update Replication Daemon): démon de mise à jour autonome. Est utilisé pour propager les changements effectués dans une base de données slapd aux autres bases. Si slapd est configuré pour produire des log de réplication, slurpd lit ces journaux et envoie les changements aux instances slapd esclaves (dépendantes de l'instance principale, dite maîtresse) via le protocole LDAP. Cette technique est dite de push replication (le daemon pousse l'information vers le destinataire)

### Principales versions

Les versions d'OpenLDAP qui ont été marquantes :
* OpenLDAP Version 1 (1998) : première version publique
* OpenLDAP Version 2 (août 2000) : prise en charge de LDAPv3, d'IPv6, du TLS, …
* OpenLDAP Version 2.1 (juin 2002) :
* OpenLDAP Version 2.2 (décembre 2003) :
* OpenLDAP Version 2.3 (juin 2005) : possibilité d'avoir la configuration accessible dans l'annuaire (cn=config)
* OpenLDAP Version 2.4 (octobre 2007) : réplication miroir et multi-maître; réplication Proxy Sync; extensions LDAP v3.

## Composants tiers
### FusionDirectory

(fr) FusionDirectory est une application web sous licence GPL développé en PHP permettant de gérer facilement son annuaire LDAP et tous les services associés.

### PhpLDAPadmin

PhpLDAPadmin est une interface en PHP qui facilite l'édition des données 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 gérer l'architecture LDAP, les Schémas LDAP et les fichiers LDIF.