Lightweight Directory Access Protocolmichel/Supports/PresentationLDAP.pdf · La structure des PDU...

54
3 mars 2006 INT/LOR/RIP Michel Gardie LDAP Lightweight Directory Access Protocol

Transcript of Lightweight Directory Access Protocolmichel/Supports/PresentationLDAP.pdf · La structure des PDU...

3 mars 2006 INT/LOR/RIP Michel Gardie

LDAP

Lightweight Directory Access Protocol

INT/LOR/RIP03/03/06 2

Plan

GénéralitésProtocoleCommunication client-serveurModèle de donnéesAttributsClassesSchémaSécuritéLDIFModèle fonctionnelURLs LDAP

INT/LOR/RIP03/03/06 3

Annuaire: un besoin

Se connecter à un serveur web :http://www.int-evry.fr/Se connecter à une machine distante :ssh forest.cs.concordia.caObtenir une adresse « mail » à partir d’un carnet d’adresses partagé.S'authentifier lors d'une connexion avec un serveur de courrier.etc.

INT/LOR/RIP03/03/06 4

Exemples d'usages d'annuaires

http://www.int-evry.fr

www.int-evry.fr est résolu par le DNS

finger michel@rainbow

rainbow est résolu via le DNS, michel est résolu soit localement, soit par un annuaire d'un contexte plus large.

mailto [email protected]

résolution sur le même principe

INT/LOR/RIP03/03/06 5

Exemple d'annuaire : le DNS

Est distribué sur de nombreuses machines coopérantes.

Offre des fonctionnalités simples.

nom → adresses IP

adresse IP → nom, alias

INT/LOR/RIP03/03/06 6

LDAP : histoire

LDAP est une adaptation du protocole DAP(protocole d’accès au service d’annuaire X.500 de l’ITU)

LDAP était initialement un frontal d’accès à des annuaires X.500

LDAP est devenu un annuaire natif en 1995

La version actuelle date de décembre 1997

INT/LOR/RIP03/03/06 7

Exemples d’application de LDAP

annuaire de type pages blanches pour contacter des personnes

annuaire d’adresses de courrier permettant aux outils de composer ou vérifier des adresses

base utilisée par les systèmes pour assurer l’authentification (certificats, mots de passe)

NIS (Network Information Service)

INT/LOR/RIP03/03/06 8

Annuaire : généralités

Les annuaires peuvent contenir :

des coordonnées de personnes

des identifiants d’applications

des URL

des photos

etc.

INT/LOR/RIP03/03/06 9

Annuaire : services offerts

Un service d’annuaire offre les fonctionnalités suivantes :

un protocole pour accéder à l’annuaire

un modèle fonctionnel

un modèle de données

un modèle de duplication

un modèle de sécurité

INT/LOR/RIP03/03/06 10

Le protocole LDAP

LDAP est un protocole d’annuaire qui s’appuie sur TCP/IP.

Il définit comment les opérations et les données sont transmises.

Il définit les opérations que l'on peut exécuter :Association (bind), Recherche,Addition, modification,Destruction, etc.

INT/LOR/RIP03/03/06 11

Le protocole : transfert des données

La structure des PDU utilise le format BER (cf. ASN.1)

Les valeurs des champs sont codées en BER pour les valeurs simples (entiers, booléens, etc.)

Les autres valeurs sont codées en ASCII, UTF8 ou base64

INT/LOR/RIP03/03/06 12

Le protocole : normes

La communication est normalisée par l’IETF.

Version actuelle du protocole (RFC 2251) : 3

Autres RFC relatifs à LDAPv3 :RFC 2252 : syntaxe des attributsRFC 2253 : représentation UTF-8 des DNRFC 2254 : filtres de rechercheRFC 2255 : format des URL LDAPRFC 2256 : schéma X.500 pour LDAPRFC 2829 : méthodes d'authentificationsRFC 2830 : extension pour TLSRFC 2849 : LDIF

INT/LOR/RIP03/03/06 13

Communications

C lien tS erveur p rinc ipa l

S erveurdu p liq ué

S erveu r« re ferra l »

INT/LOR/RIP03/03/06 14

La communication client–serveur

L'association (bind) est optionnelle.

Le client peut envoyer plusieurs requêtes.

Chaque requête a un identifiant.

Une requête peut donner lieu à plusieurs messages de réponse.

opération « search »

retourne entrée 1

retourne entrée n

résultat opération recherche

opération « unbind »

fermeture de la connexion

connexion TCP et « bind »

résultat du « bind »

...........

Client Serveur

INT/LOR/RIP03/03/06 15

Le modèle de données

Le modèle de données est basé sur les entrées.

Une entrée est identifiée par un nom distingué.

Une entrée permet d'enregistrer des attributs.

Chaque attribut possède un type et une ou plusieurs valeurs.

Une entrée possède au moins une classe. La classe modélise la nature intrinsèque d'une entrée.

INT/LOR/RIP03/03/06 16

Le modèle de données

L'espace de nommage des entrées est organisé hiérarchiquement.

C'est le Directory Information Tree (DIT).

Chaque nœud correspond à une entrée.

Pour être créée, une entrée doit pouvoir être rattachée à une entrée existante ou à la racine de l'arbre.

INT/LOR/RIP03/03/06 17

Le modèle de données

Une entrée est désignée par un nom complètement qualifié.

C'est le nom distingué (DN ; distinguished name).

Un DN est décomposé en Relative Distinguished Names (RDN).

INT/LOR/RIP03/03/06 18

Structure arborescente

Le DN de Michel Gardie est :

dn: cn=Michel Gardie, ou=LOR, o=INT, dc=int-evry, dc=fr

ou=LOR est un RDNMichel GardiePascal Hennequin

INT

LORRST

dc=int-evry, dc=fr

INT/LOR/RIP03/03/06 19

Caractéristiques des attributs

Une entrée de l’annuaire contient une suite de couples {type d’attributs — valeur d’attribut}.Les attributs sont caractérisés par :

Un nom qui l’identifie

Un OID (Object Identifier) ; identifiant interne

Une syntaxe et des règles de comparaison

Une nature : mono ou multivalué

INT/LOR/RIP03/03/06 20

Exemples d’attributs

cn (commonName) : contient le nom de l’objet.

sn (surname) : contient un nom de famille.

postalCode : contient un code postal.

telephoneNumber : évident, n’est-ce pas ?

facsimileTelephoneNumber : un numéro de fax

labelledURI : contient des URLs

owner : contient le DN du propriétaire d’un objet.

INT/LOR/RIP03/03/06 21

Exemples de valeurs d'attributs

cn: Alfred E. Neuman

mail: [email protected]

ou: Département Logiciel-Réseaux

roomNumber: C 107-01

jpegPhoto:: R01G0D1h1QATAFcAAP//.......

INT/LOR/RIP03/03/06 22

Hiérarchie des attributs

Les attributs peuvent être hiérarchisés.

Un attribut peut hériter des caractéristiques d’un attribut super-type.

Exemple :

cn, sn, givenName sont des sous-types de l’attribut super-type Name.

member, owner, roleOccupant sont des sous-types de l’attribut super-type distinguishedName.

INT/LOR/RIP03/03/06 23

Description formelle d’un attribut

attributeType (1.3.6.1.4.1.7391.2.1.3

NAME ('semestre' 'sem')

DESC 'permet de coder un semestre pendant lequel a lieu une option'

EQUALITY integerMatch

SYNTAX 1.3.6.1.4.1.1466.115.121.1.27)

INT/LOR/RIP03/03/06 24

Les attributs opérationnels

Certains attributs sont dits opérationnels car ils ne servent que pour administrer les données.

Exemple :

createTimestamp

modifyTimestamp

Ces attributs apparaissent dans chaque entrée. Ils sont gérés par le serveur.

INT/LOR/RIP03/03/06 25

Les attributs opérationnels

Certains attributs n’existent que dans l’entrée rootDSE ou dans l’entrée subschema.

Exemple :

subschemaSubEntry qui contient le nom de l’entrée contenant le schéma.

attributeTypes qui contient les types d’attributs constituant le schéma.

objectClasses qui contient les classes définissant le schéma.

INT/LOR/RIP03/03/06 26

Notion de classe

Les entrées ont au moins une classe ; elles sont donc typées.

Ceci est accompli par l'attribut objectClass.

Exemple de classes :

objectClass: person

objectClass: organization

objectClass: organizationalUnit

objectClass: device

INT/LOR/RIP03/03/06 27

Intérêt d'une classe

Une classe permet de définir quels sont les attributs obligatoires et ceux optionnels.

Exemple : la classe person implique :

attributs cn et sn obligatoires ;

attributs userPassword, telephoneNumber, seeAlsoet description optionnels.

INT/LOR/RIP03/03/06 28

Les classes d’objet

Les classes modélisent des objets réels ou abstraits en les caractérisant par une liste d’attributs.

Une classe d’objet est définie par :

Un nom pour l'identifier

Un OID (identifiant interne)

Une liste d'attributs obligatoires

Une liste d'attributs optionnels

Le nom d’une classe parent

Un type (structurel, auxiliaire ou abstrait)

INT/LOR/RIP03/03/06 29

La hiérarchie des classes

Les classes forment naturellement une hiérarchie.

Au sommet se trouve la classe abstraite top.

Chaque classe hérite des propriétés (attributs) de la classe dont elle est la fille.

On peut enrichir une classe en créant une classe fille qui lui rajoute des attributs complémentaires.

INT/LOR/RIP03/03/06 30

Exemple de hiérarchie de classes

La classe inetOrgPerson a la filiation suivante :

top

person

organizationalPerson

inetOrgPerson

INT/LOR/RIP03/03/06 31

Le type d’une classe

Le type d’une classe est lié à la nature de l'objet qu'elle modélise.

Types de classe :

structurelle : objets basiques de l’annuaire.

auxiliaire : objets permettant de rajouter des attributs à des objets structurels.

abstraite : désigne des objets basiques particuliers de LDAP comme top ou alias.

INT/LOR/RIP03/03/06 32

Description formelle d’une classe

objectclass (1.3.6.1.4.1.7391.2.2.3NAME ('option' 'opt')DESC 'permet de décrire une option'SUP top STRUCTURALMUST (cn)MAY (description $ manager $ ou $ labeledURI $

population $ semestre))

INT/LOR/RIP03/03/06 33

Le schéma

Ensemble des définitions relatives aux objets manipulés par l'annuaire.

Décrit :Les classes d'objetLes types d’attributsLa syntaxe des attributsLes héritages

INT/LOR/RIP03/03/06 34

Sécurité

Deux aspects :

Sécurité des communications

Authentification des partenaires

INT/LOR/RIP03/03/06 35

Sécurité des communications

TLS / SSLTLS = Transport Layer Security

SSL = Secure Sockets Layer

TLS 1.0 ≈ SSL 3.0

TLS: RFC 2246

certificats au format X.509

SASLSASL peut chiffrer les échanges si TLS / SSL n'est pas présent.

INT/LOR/RIP03/03/06 36

Authentification

Trois niveaux :

Aucune (= anonymat !!)

Authentification simple

Authentification forte

INT/LOR/RIP03/03/06 37

Authentification simple

identifiant utilisateur (un DN)

mot de passe en clair

il vaut mieux chiffrer les échanges avec TLS

INT/LOR/RIP03/03/06 38

Authentification forte

SASL (Simple Authentication and Security Layer; RFC 2222)

Plusieurs mécanismes divers :

External

GSSAPI (Kerberos)

Digest-MD5

Identifiants dépendant du mécanisme choisi.

Possibilité d'authentification de type « proxy »

INT/LOR/RIP03/03/06 39

LDIF : LDAP Data Interchange Format

Permet de représenter les données LDAP sous la forme de texte standardisé.

Est utilisé pour afficher ou modifier les données de la base.

Usages :

faire des imports et exports de base

faire des modifications sur la base de données

effectuer des sauvegardes

INT/LOR/RIP03/03/06 40

LDIF : un exemple

dn: cn=Michel Gardie,ou=LOR,o=INT,c=FRobjectClass: inetOrgPersoncn: Michel Gardiesn: GardiegivenName: Michelmail: [email protected]: C 107-01telephoneNumber: 4789title: responsable d’option de 3ème année

INT/LOR/RIP03/03/06 41

LDIF : modification d’attributs

dn: cn=Michel Gardie,ou=LOR,o=INT,c=FRchangetype: modifyadd: licenseCarlicenseCar: 5309 XR 45-replace: titletitle: responsable d’option

INT/LOR/RIP03/03/06 42

Enregistrement des données

LDAP utilise le jeu de caractères UTF-8 (Unicode Transformation Format – 8) pour le stockage des valeurs d’attributs de type texte et de celui des DN.

Les données binaires sont codées en base64.

UTF-8 englobe tous les jeux de caractères:iso-latin1, iso-latin2, etc.katakana, arabe, hébreu, grec, etc.

INT/LOR/RIP03/03/06 43

Le modèle fonctionnel

Le modèle fonctionnel définit comment on accède à l’information.

Les opérations de base permettent :

d'accéder au serveur

de rechercher des entrées

de modifier des entrées

de modifier la structure de l'arbre

INT/LOR/RIP03/03/06 44

Accès aux données

L'accès aux données est accompli principalement par une combinaison de :

Une base de recherche (un point de départ),

Un filtre,

Une étendue de recherche (scope).

INT/LOR/RIP03/03/06 45

Accès : base de recherche

La base de recherche indique où commence la recherche dans la hiérarchie des données. La base de recherche est donnée sous la forme d’un DN.

Exemples :

o=INT,c=FR

dc=int-evry,dc=fr

ou=LOR,o=INT,dc=int-evry,dc=fr

INT/LOR/RIP03/03/06 46

Accès : filtre

Un filtre spécifie :

des types d'attributs,

des assertions sur les valeurs,

des critères de recherche.

Ex : (&(cn=Mi*)(ou=LOR)) recherche les entrées

dont le cn commence par « Mi »

et pour lesquelles ou contient exactement « LOR »

INT/LOR/RIP03/03/06 47

Accès : étendue de recherche

L’étendue (scope) indique le niveau de profondeur de recherche.

Cela peut être :

le DN de base lui-même [base],

un niveau sous le DN de base [one],

le sous-arbre complet dont la racine est le DN de base [sub].

INT/LOR/RIP03/03/06 48

L’étendue

Michel GardiePascal Hennequin

INT

LORRST

dc=int-evry, dc=frdc=int-evry, dc=fr

base

one

sub

INT/LOR/RIP03/03/06 49

Les opérations de base

search recherche dans l’annuaire d’objets à partir de critères

compare comparaison du contenu de 2 objets

add ajout d’une entrée

modify modification du contenu d’une entrée

delete suppression d’une entrée

rename modification du DN d’une entrée

bind connexion au serveur

unbind déconnexion

abandon abandon d’une opération en cours

INT/LOR/RIP03/03/06 50

Paramètres d’une requête

base object l'endroit de l'arbre où doit commencer la recherche

scope la profondeur de la recherche

derefAliases si les liens sont suivis ou non

size limit nombre maximum de réponses

time limit temps maximum alloué à une opération

attrOnly indique si les valeurs des attributs sont transmises

search filter le filtre de la recherche

list of attributesla liste des attributs désirés

INT/LOR/RIP03/03/06 51

Les URLs LDAP

Les URLs LDAP (RFC 2255) permettent aux clients web d’avoir un accès direct au protocole LDAP

Syntaxe :

ldap://<hostname>:<port>/<base_dn>?<attributes>?<scope>?<filter>

INT/LOR/RIP03/03/06 52

URLs LDAP : exemples

ldap://mesange/o=INT,c=FR??subretourne le contenu complet de la base

ldap://mesange/ou=LOR,o=INT,c=FR??oneretourne toutes les entrées situées un niveau sous ou=LOR,c=INT,c=FR

ldap://mesange/ou=LOR,o=INT,c=FR???(cn=*mi*)recherche dans le sous-arbre toutes les entrées dont l’attribut cn contient mi.

INT/LOR/RIP03/03/06 53

URLs LDAP : encore des exemples

ldap://mesange/ou=LOR,o=INT,c=FR?cn,sn?oneretourne toutes les entrées situées un niveau sous ou=LOR,c=INT,c=FRaffiche les attributs cn et sn

ldap://mesange/o=INT,c=FR?mail?sub?(cn=mi*)recherche dans le sous-arbre toutes les entrées dont l’attribut cn se termine par mi.base de recherche : o=INT,c=FRattribut affiché : mail

INT/LOR/RIP03/03/06 54

Exemple d’URLs LDAP

ldap://mesange/?+?basepermet d’accéder à l’entrée spécifique rootDSEldap://mesange/o=INT,c=FR?+,*?sub?(sn=Gardie)permet d’obtenir les attributs courants et opérationnels des entrée pour lesquelles sn=Gardie.ldap://mesange/cn=subschemapermet d’obtenir les attributs courants de cette entrée spécifiqueldap://mesange/cn=subschema?+?permet d’obtenir les atttributs opérationnels, soit la description du schéma.