Un exemple de browser LDAP

odecalmΛογισμικό & κατασκευή λογ/κού

2 Ιουλ 2012 (πριν από 5 χρόνια και 4 μήνες)

403 εμφανίσεις

1
1
Introduction à LDAP
« Lightweight Directory Access
Protocol »
2
Un exemple de browser LDAP
http://www.iit.edu/~gawojar/ldap/
2
3
Présentation

LDAP : "LightweightDirectory 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 peu à l'image du système DNS

Un grand nombre d'entrées (= «enregistrements»)

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

Essentiellement des attributs (= «champs») textuels

Beaucoup plus d'accès en lecture qu'en écriture

Stockage des informations optimisé pour la rapidité de lecture
4
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)
3
5
Une spécification à plusieurs niveaux

Représentation des données

Arborescence hiérarchique

Nommage et typage des attributs

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)

bind/unbind, search, add, modifiy, compare, …

Syntaxe d'interrogation (filtres de recherche)

Notation préfixée : (&(o=*)(!(c=fr)))

URLs LDAP :
ldap://…

Format ASCII d'échange de données : LDIF
6
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é
4
7
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.
8
Filtres LDAP

Définition de la syntaxe : RFC 1558

Notation préfixée

Les opérateurs précèdent les opérandes

Filtres de base :

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))
5
9
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
:-(
10
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).
6
11
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 («A
ccess 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.
12
Outils LDAP

Serveurs LDAP

OpenLDAP: implémentation de référence dans le domaine libre

Version 1.2 (LDAP v2) ou 2.0 (LDAP v3)

Netscape Directory Server

Active Directory (Windows 2000)

Browsers/ Editeurs :

Browser LDAP en Java, gq

Bibliothèques

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
7
13
Ressources

http://www.ldapcentral.com

Ressources LDAP regroupées sur un site.

http://www.openldap.org

Serveur LDAP libre. Ne pas oublier de parcourir la FAQ.

http://developer.netscape.com/tech/directory/index.html

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