Lightweight Directory Access Protocolmichel/Supports/PresentationLDAP.pdf · La structure des PDU...
Transcript of Lightweight Directory Access Protocolmichel/Supports/PresentationLDAP.pdf · La structure des PDU...
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.