OpenLDAP: un annuaire LDAP Open source

Temps de lecture approximatif : 7 minutes

Sommaire

 L’annuaire OpenLDAP

Définition de l’annuaire

(source: www.commentcamarche.net)

Un annuaire est ainsi un recueil de données dont le but est de pouvoir retrouver facilement des ressources (généralement des personnes ou des organisations) à l’aide d’un nombre limité de critères.

Nous allons nous intéresser tout particulièrement à un type spécifique d’annuaires : les annuaires électroniques.
Les annuaires électroniques sont un type de base de données spécialisées permettant de stocker des informations de manière hiérarchique et offrant des mécanismes simples pour rechercher l’information, la trier, l’organiser selon un nombre limité de critères.
Ainsi le but d’un annuaire électronique est approximativement le même que celui d’un annuaire papier, si ce n’est qu’il offre une grande panoplie de possibilités que les annuaires papier ne sauraient donner.

L’utilisation d’annuaire ne se limite pas à la recherche de personnes ou de ressources. En effet, un annuaire peut servir à

  • constituer un carnet d’adresse
  • authentifier des utilisateurs (grâce à un mot de passe)
  • définir les droits de chaque utilisateur
  • recenser des informations sur un parc matériel (ordinateurs, serveurs, leurs adresses IP et adresses MAC, …)
  • décrire les applications disponibles

 Caractéristiques des annuaires électroniques

Les annuaires électroniques possèdent un grand nombre d’avantages sur leurs « cousins de papier »  :

  • ils sont dynamiques : la mise à jour d’un annuaire électronique est beaucoup plus simple (et nettement moins coûteuse) à réaliser que celle d’un annuaire papier. Ainsi un annuaire en ligne (disponible sur le réseau) sera à jour beaucoup plus rapidement, d’autant plus que les personnes recensées dans l’annuaire peuvent elles-même modifier les informations les concernant (si elles sont habilitées à le faire).
  • ils sont sûrs : les annuaires en ligne disposent de mécanismes d’authentification des utilisateurs grâce à un mot de passe et un nom d’utilisateur ainsi que des règles d’accès permettant de définir les branches de l’annuaire auxquelles l’utilisateur peut accèder
  • ils sont souples : ils permettent ainsi de classer l’information selon des critères multiples contrairement aux annuaires papiers, imprimés une fois pour toute pour permettre de rechercher selon un critère figé (en général l’ordre alphabétique selon le nom)

La différence entre annuaire et base de données

Un annuaire est un type de base de données spécifique, c’est-à-dire qu’il s’agit d’une sorte de base de données ayant des caractéristiques particulières :

  • un annuaire est prévu pour être plus sollicité en lecture qu’en écriture. Cela signifie qu’un annuaire est conçu pour être plus souvent consulté que mis à jour.
  • les données sont stockées de manière hiérarchique dans l’annuaire, tandis que les bases de données dites « relationnelles » stockent les enregistrements de façon tabulaire.
  • les annuaires doivent être compacts et reposer sur un protocole réseau léger
  • Un annuaire doit comporter des mécanismes permettant de rechercher facilement une information et d’organiser les résultats
  • les annuaires doivent pouvoir être répartis. Cela signifie qu’un serveur d’annuaire doit comporter des mécanismes permettant de coopérer, c’est-à-dire d’étendre la recherche sur des serveur tiers si jamais aucun enregistrement n’est trouvé
  • Un annuaire doit être capable de gérer l’authentification des utilisateurs ainsi que les droits de ceux-ci pour la consultation ou la modification de données

Ainsi, un annuaire est généralement une application se basant sur une base de données afin d’y stocker des enregistrements, mais surtout un ensemble de services permettant de retrouver facilement les enregistrements à l’aide de requêtes simples. Une base de données par contre n’est pas forcément un annuaire…

Nécessité d’une normalisation

Ainsi un annuaire est un serveur remplissant les conditions décrites ci-dessus, mais l’implémentation peut être totalement différente d’un serveur à un autre, c’est pourquoi il a été nécessaire de définir une interface normalisée permettant d’accéder de façon standard aux différents services de l’annuaire. C’est le rôle du protocole LDAP (Lightweight Directory Access Protocol), dont le rôle est uniquement de fournir un moyen unique (standard ouvert) d’effectuer des requêtes sur un annuaire (compatible LDAP).

Les annuaires répartis

Etant donné le grand nombre d’enregistrements que peut comporter un annuaire, il n’est parfois pas concevable de créer un annuaire centralisé contenant les informations de centaines de milliers de personnes. C’est la raison pour laquelle les serveurs d’annuaires doivent être capable de communiquer entre-eux afin de partager l’information.

Cela est par exemple le cas pour des grandes entreprises nécessitant un annuaire pouvant être interrogé sur les adresses de personnes de différentes filiales localisées dans des régions géographiquement éloignées

Les serveurs d’annuaires possèdent ainsi la faculté de se répliquer, c’est-à-dire d’offrir des fonctions permettant d’importer et d’exporter des enregistrements (on dit généralement synchroniser) avec d’autres annuaires. On parle ainsi de réplication ou bien de synchronisation.

La synchronisation est assurée par un outil appelé méta-annuaire (on parle aussi parfois de proxy LDAP). On distingue habituellement deux types de méta-annuaires :

  • les méta-annuaires avec réplication créant une base de donnée issue de l’agrégation des données provenant des différents annuaires
  • les méta-annuaires « virtuels » créant des références centrales vers les données contenues dans les différents annuaires, mais ne dupliquant pas l’information

Les concepts de LDAP

(Source: http://www-sop.inria.fr)

LDAP est un protocole d’annuaire standard et extensible. Il fournit :

  • le protocole permettant d’accéder à l’information contenue dans l’annuaire,
  • un modèle d’information définissant le type de données contenues dans l’annuaire,
  • un modèle de nommage définissant comment l’information est organisée et référencée,
  • un modèle fonctionnel qui définit comment on accède à l’information ,
  • un modèle de sécurité qui définit comment données et accès sont protégés,
  • un modèle de duplication qui définit comment la base est répartie entre serveurs,
  • des APIs pour développer des applications clientes,
  • LDIF, un format d’échange de données.

Le protocole LDAP

Le protocole définit comment s’établit la communication client-serveur. Il fournit à l’utilisateur des commandes pour se connecter ou se déconnecter,  pour rechercher, comparer, créer, modifier ou effacer des entrées. Des mécanismes de chiffrement (SSL ou TLS) et d’authentification (SASL), couplés à des mécanismes de règles d’accès (ACL) permettent de protéger les transactions et l’accès aux données.

La plupart des logiciels serveurs LDAP proposent également un protocole de communication serveur-serveur permettant à plusieurs serveurs d’échanger leur contenu et de le synchroniser (replication service) ou de créer entre eux des liens permettant ainsi de relier des annuaires les uns aux autres (referral service).

La communication client-serveur est normalisée par l’IETF dans la version actuelle, la 3, du protocole LDAP (RFC2251). Concernant la communication serveur-serveur, le referral service est définit par LDAPv3, par contre le replication service est normalisé sous la dénomination LDAP Duplication Protocol (LDUP).

Contrairement à d’autres protocoles d’Internet, comme HTTP, SMTP ou NNTP, le dialogue LDAP ne se fait pas en ASCII mais utilise le format de codage Basic Encoding Rule (BER).

Le modèle de données LDAP

LDAP était à l’origine une passerelle d’accès à des annuaires X500. En 95, l’Université du Michigan créa le premier serveur LDAP autonome (standalone LDAP) utilisant sa propre base de données au format de type dbm. Les serveurs LDAP sont conçus pour stocker une grande quantité de données mais de faible volume et pour accéder en lecture très rapidement à celles-ci grâce au modèle hiérarchique.

Voici par exemple une structure de l’organisation nommé « mon_entreprise »:

dc:         com
             |
dc:        mon_entreprise         ## (Organisation)
          /      \
ou:   People   servers    ## (Unités d'organisation (UO) )
      /    \     ..
uid: ..   Toto            ## (données spécifiques d'UO )

Pour plus de détail sur le DIT (Directory Information Tree), le schéma, les attributs, etc vous trouverez des informations détaillées dans  cet article.

L’annuaire OpenLDAP

 

OpenLDAP (http://www.openldap.org) est un projet libre de serveur d’annuaire conforme à la norme LDAP 3. Ce serveur, dérivé de l’implémentation mise au point par l’université du Michigan, est développé selon les termes de la licence GNU GPL, ce qui signifie qu’il est entièrement gratuit et que les sources de ce logiciel sont disponibles.
OpenLDAP est composé des éléments suivants :

 

  • Le serveur LDAP : slapd
  • La passerelle LDAP vers X500 : ldapd
  • Le serveur de réplication : slurpd
  • Des outils d’administration : ldapvi

 

Mon scrapbook d’OpenLDAP

Pour rappel, ce paragraphe « scrapbook » me permet de partager avec vous les liens sur différents articles qui m’ont aidés ou que j’ai trouvé intéressants.
Merci de me signaler tous liens devenus obsolètes.
Pour certains articles je met à disposition une capture « pdf » des pages Web au cas où le lien viendrait à disparaître ( si si…ça arrive ( ͡~ ͜ʖ ͡°) ).
Je profite au passage pour remercier les auteurs et contributeurs de tous ces sites pour leurs articles très intéressants qui m’ont permis de progresser.

Généralitées

Mes notes sur OpenLDAP

En cliquant sur le lien ci-dessous, vous trouverez mes notes prises au fil du temp sur le service OpenLDAP. Veuillez excuser la brieveté et la présentation très minimaliste de la page.   😉

Notes OpenLDAP


“La connaissance a plus de valeur et s’accroît rapidement lorsqu’elle est partagée et accessible librement…”

Ce document est publié sous licence Creative Commons
Attribution, Partage à l’identique, Contexte non commercial 3.0 : http://creativecommons.org/licenses/by-nc/3.0/

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Le temps imparti est dépassé. Merci de saisir de nouveau le CAPTCHA.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.