Introduction à LDAP
Transcription
Introduction à LDAP
Introduction à LDAP
« Lightweight Directory Access
Protocol »
1
Un exemple de browser LDAP
http://www.iit.edu/~gawojar/ldap/
2
1
Présentation
LDAP : "Lightweight Directory Access Protocol"
Version simplifiée du protocole DAP de X.500
X.500 : Intéressant, mais trop ambitieux et trop complexe pour de
nombreux problèmes.
LDAP : Récent, moins ambitieux, allégé
Annuaire = base de données spécifique :
Présentation hiérarchique
Un grand nombre d'entrées (= « enregistrements »)
Un peu à l'image du système DNS
Si nécessaire, ces entrées peuvent être distribuées sur plusieurs
serveurs
On peut également mettre en place une réplication d’un serveur
Une faible quantité d'informations par entrée
Beaucoup plus d'accès en lecture qu'en écriture
Essentiellement des attributs (= « champs ») textuels
Stockage des informations optimisé pour la rapidité de lecture
3
Références
Spécifications définies dans de nombreux RFC :
RFC hérités de X.500 :
RFC 1274, 1275, 1279, 1308, 1309, 1430, 1617, 2164, 2293,
2294
RFC spécifiques à LDAP
RFC 1558 & 1960 (filtres de recherche), 1777 (LDAP), 1778,
1779, 1781, 1798 (protocole réseau), 1823 (API), 1959 (URLs),
2044 (Unicode), 2218, 2247
LDAP v3 : RFC 2251, 2252, 2253, 2254 (filtres de recherche),
2255 (URLs)
4
2
Une spécification à plusieurs niveaux
Représentation des données
Nommage et typage des attributs
Arborescence hiérarchique
Coexistence d’attributs standard de X500 (dc, c, o, cn, ou,
objectclass, LabeledURI, …) et d’attributs personnalisés
Protocole réseau
Protocole binaire sans connexion pour optimiser les échanges
Interface de programmation (API)
Syntaxe d'interrogation (filtres de recherche)
bind/unbind, search, add, modifiy, compare, …
Notation préfixée : (&(o=*)(!(c=fr)))
URLs LDAP : ldap://…
Format ASCII d'échange de données : LDIF
5
Un peu de vocabulaire
Arbre : un serveur LDAP
Forêt : un annuaire LDAP distribué sur plusieurs serveurs
Entrée : un nœud de l'arbre (= « enregistrement »)
Attribut : propriété d'une entrée (= « champ »)
DN (« Distinguished Name ») : identifiant d'une entrée, qui
donne sa position dans l’arbre
Schéma : contrôle de validité d'une entrée
« LDAP Referral » : lien entre deux serveurs appartenant à un
annuaire distribué
6
3
Le « Distinguished Name » (DN)
Identifiant d’une entrée de l’arbre
Composition : succession de composants montrant la position de
l'entrée par rapport à la racine
On se déplace vers la racine (comme dans les DNS), et non pas vers
les feuilles (comme dans un système de fichiers)
Exemples :
dc=iar2m,dc=ensmp,dc=fr (racine du serveur sur Palo-Alto)
uid=daverio,ou=personnes,dc=iar2m,dc=ensmp,dc=fr
RDN : « Relative DN »
C'est le premier composant du DN (ex : uid=daverio)
En principe, le RDN doit se retrouver aussi sous la forme d'un attribut
dans l'entrée concernée.
7
Filtres LDAP
Définition de la syntaxe : RFC 1558
Notation préfixée
Filtres de base :
Les opérateurs précèdent les opérandes
Existence d’un attribut : (o=*)
Recherche de valeur : (o=Dupon*), (o=*bert*)
Négation : (!(o=*))
ET : (&(o=*)(c=fr))
OU : (|(c=fr)(c=gb)(c=de))
8
4
URL LDAP
Spécification : RFC 1959 (LDAP v2) / RFC 2255 (LDAP v3)
But : interrogation d’un annuaire LDAP
Syntaxe simplifiée :
ldap://server[:port]/dn?attributs?portée?filtre
server : le nom du serveur (ldap.domaine.com, par exemple)
port : 389 par défaut
dn : le DN de base de la recherche
attributs : la liste des attributs à afficher (par défaut : tous)
portée : la portée de la recherche (base, one, sub)
filtre : le filtre de recherche (RFC 1558)
Reconnues dans Netscape 4.x et 6.2, mais pas Internet Explorer
:-(
9
Schémas LDAP
Spécifications d'une d'entrée
La classe d'une entrée est identifiée par son/ses attribut(s)
« objectclass ».
Une entrée doit toujours contenir au moins un attribut
objectclass
Les attributs de chaque objectclass se combinent pour donner la liste
des attributs de l'entrée.
Propriétés des attributs
Un attribut peut être requis ou simplement autorisé.
Un attribut peut prendre des valeurs simples ou multiples.
Chaque attribut peut-être identifié par son Object ID (OID).
Un OID spécifie un nom et une "syntaxe" : cis ("Case Ignore String"), ces
("Case Exact String"), …
Les OID sont partiellement normalisés (délégation d'attribution).
10
5
Sécurité d’un annuaire LDAP
La sécurité n’est pas pour le moment le point fort de LDAP…
Dans la majorité des cas, on peut se connecter à un serveur LDAP
de façon anonyme
Dans ce cas, l’accès est limité en consultation
Cependant un certain nombre de mécanismes existent déjà :
Authentification possible des utilisateurs par Kerberos.
Restriction des permissions d’accès à des branche de l’arbre par
des ACL (« Access Control Lists »).
Ces mécanismes ne sont pas disponibles sur tous les serveurs
Le plus simple peut être de protéger le serveur à l’aide d’un pare-feu.
11
Outils LDAP
Serveurs LDAP
OpenLDAP : implémentation de référence dans le domaine libre
Browsers / Editeurs :
Browser LDAP en Java, gq
Bibliothèques
Version 1.2 (LDAP v2) ou 2.0 (LDAP v3)
Netscape Directory Server
Active Directory (Windows 2000)
Perl : module Net::LDAP
Python : module LDAP
Java : bibliothèque JNDI
ColdFusion, php, Roxen, … : accès à LDAP intégré
Passerelles
LDAP vers HTML, e-mail, gopher, …
Interfaces LDAP <-> SQL
12
6
Ressources
http://www.ldapcentral.com
http://www.openldap.org
http://developer.netscape.com/tech/directory/index.html
Ressources LDAP regroupées sur un site.
Serveur LDAP libre. Ne pas oublier de parcourir la FAQ.
Ressources LDAP chez Netscape
LDAP est intégré dans quasiment tous les serveurs Netscape.
http://sources.trad.org
« Sources de logiciels libres » - Consulter la section LDAP pour
une liste d’outils LDAP
13
7
Documents pareils
ANNUAIRE ET GESTION D`IDENTITÉ
- Conception du schéma
- Conception de l'arborescence LDAP
- Conception de la topologie
_____________________________________________________________________________________________________________...