CoursLDAP (1)
CoursLDAP (1)
Salim Benayoune
Plan
Le protocole LDAP
Le modèle d’information
Le modèle de nommage
Le modèle de services
Le modèle de sécurité
Le modèle de duplication
Salim Benayoune 2
INTRODUCTION
Salim Benayoune 3
Concepts : qu’est-ce qu’un annuaire ?
Petit Robert :
« Recueil publié annuellement et qui contient des renseignements variables d'une
année à l'autre »
Un conteneur d’informations organisées
«une base de données optimisée pour les opérations de lecture, et supportant des
opérations de recherche et de navigation avancées»
Exemples d’annuaires courants
annuaire téléphonique, carnet d’adresses, catalogue de vente, guides télé
Salim Benayoune 5
Comparaison avec d'autres systèmes
Les annuaires électroniques sont aussi prévus pour être distribués et répliqués à
grande échelle
Salim Benayoune 6
Comparaison avec d'autres systèmes
Salim Benayoune 7
Comparaison avec d'autres systèmes
Conséquences :
La contrepartie de l’extensibilité des annuaires est l'absence de transactions et de
procédures stockées
Il faudra donc faire attention lors de l'exécution d'opérations complexes, et gérer du
côté applicatif les erreurs
il n'existe pas dans les annuaires de notions de cohérence, ainsi la notion de clé
étrangères n'existe pas
Si les annuaires permettent dans un certain sens d'effectuer des recherches assez
évoluées (recherches approximatives ou phonétiques), ils ne possèdent pas
l'équivalent de l'instruction SQL joint pour fusionner des informations de plusieurs
sources.
Salim Benayoune 8
Comparaison avec d'autres systèmes
Salim Benayoune 10
Introduction
Dix RFC principales, et encore plus de RFC complémentaires ? Si vous aviez traduit le
Lightweight de LDAP par "simple", la lecture de ces RFC risque de vous décevoir...
Salim Benayoune 11
Introduction
LDAP garde beaucoup d’aspects de X.500 dans les grandes lignes, mais va
dans le sens de la simplification et de la performance
Salim Benayoune 13
Le protocole
Le protocole définit :
Comment s’établit la communication client-serveur :
commandes pour se connecter ou se déconnecter, pour rechercher, comparer,
créer, modifier ou effacer des entrées.
Comment s’établit la communication serveur-serveur :
échanger leur contenu et le synchroniser (replication service)
créer des liens permettant de relier des annuaires les uns aux autres (referral
service).
Le format de transport de données :
pas l’ASCII (comme pour http, smtp...) mais le Basic Encoding Rules (BER), sous
une forme allégée (appelée LBER : Lightweight BER)
Les mécanismes de sécurité
Méthodes de chiffrement et d’authentification
Mécanismes d’accès aux données
Les opérations de base : search, add, delete, etc.
Salim Benayoune 14
Le protocole – le modèle client-serveur
Les éléments de protocole LDAP sont codés à l’aide d’une version simplifiée
de la syntaxe BER (Basic Encoding Rules), sous-ensemble de ASN 1 (Abstract
Syntax Notation 1)
Salim Benayoune 16
Le protocole : les opérations
Les opérations de mise à jour : elles regroupent quatre fonctions qui sont l’ajout,
la suppression, la modification et le changement de nom.
Salim Benayoune 17
Le protocole : LDAPv3
LDAPv3 est conçu pour être extensible sans avoir à modifier la norme grâce
à 3 concepts :
LDAP extented operations : rajouter une opération, en plus des neuf opérations
de base.
LDAP controls : paramètres supplémentaires associés à une opération qui en
modifient le comportement.
Simple Authentification and Security Layer (SASL): couche supplémentaire
permettant à LDAP d’utiliser des méthodes d’authentification externes (Comme
Kerberos).
Salim Benayoune 18
Le protocole : les opérations
LDAPMessage ::= SEQUENCE {
messageID MessageID,
protocolOp CHOICE {
bindRequest BindRequest,
bindResponse BindResponse,
unbindRequest UnbindRequest,
searchRequest SearchRequest,
searchResEntry SearchResultEntry,
searchResDone SearchResultDone,
searchResRef SearchResultReference,
modifyRequest ModifyRequest,
modifyResponse ModifyResponse,
addRequest AddRequest,
addResponse AddResponse,
delRequest DelRequest,
delResponse DelResponse,
modDNRequest ModifyDNRequest,
modDNResponse ModifyDNResponse,
compareRequest CompareRequest,
compareResponse CompareResponse,
abandonRequest AbandonRequest,
extendedReq ExtendedRequest,
extendedResp ExtendedResponse },
controls [0] Controls OPTIONAL }
Salim Benayoune 19
Le protocole : Opération d'association
Le modèle d’information
Le modèle de nommage
Le modèle de sécurité
Salim Benayoune 21
Le modèle d’information
Salim Benayoune 22
Le modèle d’information
Schéma de l’annuaire :
définit pour le serveur l’ensemble des définitions relatives aux objets qu’il sait
gérer
décrit les classes d’objets, leurs types d’attributs et leur syntaxe
Vérification de schéma :
A chaque création d’entrée, le serveur vérifie si elle est conforme à sa (ses)
classe(s) d’appartenance
Flexibilité du schéma
attributs optionnels
attributs multi-valués
Avec LDAPv3, obligation pour un serveur de publier son schéma via LDAP en le
stockant dans l’entrée subschema
Salim Benayoune 23
Le modèle d’information
[Link]
Salim Benayoune 24
Le modèle d’information
Salim Benayoune 26
Le modèle d’information
Exemple de syntaxes :
[Link].4.1.1466.[Link] dn Un DN
Exemple d’attributs
Salim Benayoune 29
Le modèle d’information
createTimestamp
telephoneNumber
Salim Benayoune 30
Le modèle d’information
Exemple de classes :
une organisation (o),
ses départements (ou),
son personnel (organizationalPerson),
ses imprimantes (device),
ses groupes de travail (groupofnames).
Salim Benayoune 31
Le modèle d’information
Les différents types de classe décrits dans le standard LDAP sont les
suivants:
Abstrait : les classes de ce type ne peuvent pas avoir d’instance. Seules les classes
qui en dérivent peuvent en avoir.
Exemple: top, dont dérivent toutes les autres classes.
Structurel : les classes de ce type peuvent avoir des instances dans l’annuaire.
Exemple : la classe person.
Auxiliaire : les classes de ce type sont utilisées pour compléter les classes de type
structurel. Une entrée dans l’annuaire peut ainsi être complétée par un ensemble
d’attributs à l’aide d’une instance d’une classe auxiliaire.
Généralement, tous les attributs d’une classe auxiliaire sont facultatifs et la classe
auxiliaire dérive directement de la classe top.
Salim Benayoune 32
Le modèle d’information
Caractéristique Description
OID Identifiant de la classe
NAME Nom de la classe
DESC Description de la classe
SUP OID de la classe dont celle-ci
dérive
TYPE Type de classe
MUST Liste des OID des attributs
obligatoires
MAY Liste des OID des attributs
facultatifs
Salim Benayoune 33
Le modèle d’information
Une classe dérivée d’une autre ne peut donc pas redéfinir un attribut de la classe
mère pour en modifier les caractéristiques
Salim Benayoune 34
Le modèle d’information
Salim Benayoune 35
Le modèle d’information
L’agrégation d’objets :
Une entrée dans l’annuaire peut être constituée de plusieurs objets
chaque objet étant rattaché à une seule classe
La seule condition est que seule une des classes utilisées soit de type structurel
Exemple :
Il n’est pas envisageable de créer un objet de type person et
organizationalUnit (ce qui d’ailleurs n’a pas de sens en soi).
Salim Benayoune 36
Le modèle d’information
L’agrégation d’objets :
Si un même attribut se trouve dans plusieurs classes, utilisées par un même objet,
il n’y a aucun moyen de faire la différence entre les valeurs de cet attribut
associées à une classe ou à une autre.
Exemple :
si les classes person et strongAuthenticationUser contiennent toutes
les deux l’attribut description, un objet qui serait l’instance de ces deux classes
contiendrait un seul attribut description
Celui-ci peut avoir une ou plusieurs valeurs, mais il n’y a aucun moyen de rattacher
une valeur à une classe.
Ceci est dû au fait que le modèle LDAP impose un référentiel commun d’attributs,
indépendamment de toute classe.
Salim Benayoune 37
Le modèle d’information
Exemple de classes :
subschema (Auxiliaire) : permet de décrire l’ensemble des syntaxes, règles de
comparaison, attributs et classes pris en charge par l’annuaire LDAP.
extensibleObject (Auxiliaire) :
permet de créer des objets pouvant utiliser n’importe quel attribut décrit dans le
schéma de l’annuaire.
rarement utilisée ( introduit des objets quelconques dans un annuaire, en ne
respectant aucune règle d’intégrité)
applicationEntity (structurelle) :
Décrit une application informatique accessible à travers un réseau d’entreprise
certificationAuthority (Auxiliaire) :
Description d’une autorité délivrant des certificats
device (Structurel) :
Décrit un équipement quelconque
groupOfNames (Structurel) :
Groupe d’objets
Salim Benayoune 38
Le modèle d’information
Tous ces contrôles sont effectués par le serveur d’annuaire avant de réaliser
toute modification ou toute insertion d’objet.
Salim Benayoune 39
Le modèle de nommage
Salim Benayoune 40
Le modèle de nommage
Salim Benayoune 41
Le modèle de nommage
Salim Benayoune 42
Le modèle de nommage
Salim Benayoune 43
Le modèle de nommage
Salim Benayoune 44
Le modèle de nommage
Salim Benayoune 45
Le modèle de nommage
Le nom des objets : LDAP définit deux concepts pour nommer un objet :
un nom relatif désigné par RDN (Relative Distinguished Name);
un nom absolu désigné par DN (Distinguished Name).
Salim Benayoune 46
Le modèle de nommage
Exemple :
Salim Benayoune 47
Le modèle de nommage
Salim Benayoune 48
Le modèle de nommage
Le modèle physique utilisé par les serveurs LDAP peut varier d’un éditeur à
l’autre.
Certains s’appuient sur des bases de données relationnelles, et d’autres sur des
bases de données objet.
Salim Benayoune 49
Le modèle de nommage
Salim Benayoune 50
Le modèle de services
Le modèle définit :
les opérations d’interrogation
les opérations de comparaison
les opérations de mise à jour
les opérations d’authentification et de contrôle
Les opérations étendus (V3)
Salim Benayoune 51
Le modèle de services
La recherche
Les 8 paramètres requis par cette opération sont les suivants :
Paramètre Description
base object l'endroit de l'arbre où doit commencer la recherche
Salim Benayoune 52
Le modèle de services
scope :
définit la profondeur de la recherche dans le DIT.
Salim Benayoune 53
Le modèle de services
Salim Benayoune 54
Le modèle de services
(operator(assertion)(assertion)...(operator(assertion)(assertion)...)))
Salim Benayoune 55
Le modèle de services
Exemples :
Filtre Syntaxe Interprétation
Approximation (sn~=Benayoune) nom dont la phonétique est
voisine de Benayoune
Egalité (sn=Benayoune) vaut exactement Benayoune
Comparaison (sn>=Benayoune) noms situés alphabétiquement
après Benayoune
Exemples :
Toutes les personnes ayant leur numéro de téléphone renseigné :
(&(objectclass=person)(telephoneNumber=*))
Toutes les personnes dont le nom commence par 'A' et n'habitant pas Paris :
(&(objectclass=person)(cn=A*)(!(l=Paris)))
Toutes les personnes dont le nom ressemble à Febvre (Faivre, Fèvre, Lefebvre,
...):
(&(objectclass=person)(cn~=febvre))
(&(objectclass=person)(cn=*f*vre))
Salim Benayoune 57
Le modèle de services
Exemple :
(ou:dn:=users)
attribut:oid-matching-rule:=value
Exemple : sensibilité à la casse
(cn:[Link]:=Philippe)
Salim Benayoune 58
Le modèle de services
La comparaison :
vérifier si un objet de l’annuaire contient bien une ou plusieurs valeurs données.
Cette opération est identique à une opération de recherche dans laquelle les
paramètres sont :
Le DN à comparer
le périmètre de la recherche : base
le filtre de la recherche contenant les attributs et les valeurs à comparer,
la liste des attributs à récupérer égale à l’OID 1.1, qui est un OID inexistant
Avantage :
Efficacité
Si l’on cherche à comparer un attribut qui n’existe pas, l’opération de comparaison
renvoie un code retour précisant que cet attribut n’existe effectivement pas, alors
que l’opération de recherche ne renvoie pas de résultat.
Salim Benayoune 59
Le modèle de services
La modification d’objet :
permet de modifier un objet dans l’annuaire
Tous les attributs de l’objet peuvent être modifiés à l’exception du DN
Le DN est modifié par une autre opération
Les paramètres requis par cette opération :
DN de l’objet à modifier
Liste des modifications à effectuer : traitée d’une façon atomique.
Condition de succès :
Les modifications demandées doivent respecter le schéma de l’annuaire
L’identification fournie lors de la connexion doit correspondre à un objet ayant les
droits d’écriture dans l’annuaire
Les attributs appartenant au DN de l’objet ne pourront pas être supprimés à l’aide
de cette opération.
Salim Benayoune 60
Le modèle de services
L’ajout :
permet d’ajouter un nouvel objet dans l’annuaire
Les conditions de succès :
1. L’objet parent de l’objet à rajouter doit exister dans l’annuaire
2. Il ne doit pas exister dans l’annuaire un autre objet ayant le même DN.
3. Les attributs renseignés doivent respecter le schéma de l’annuaire.
4. L’identification fournie lors de la connexion doit correspondre à un objet ayant les
droits d’écriture dans l’annuaire sur tous les attributs à rajouter et dans la branche
de l’arbre à mettre à jour.
Salim Benayoune 61
Le modèle de services
La suppression :
permet de supprimer un objet de l’annuaire
Les conditions de succès :
1. L’objet à supprimer doit exister dans l’annuaire
Salim Benayoune 62
Le modèle de services
La modification de DN:
permet de modifier le DN d’un objet de l’annuaire
Les paramètres requis :
DN de l’objet à modifier
Nouveau RDN: permet de désigner le nouveau RDN de l’objet
Indicateur de suppression de l’ancien RDN: supprimer l’ancien RDN ou non
DN de l’objet qui sera le nouveau supérieur : non obligatoire
Conditions de succès :
L’objet à modifier doit exister dans l’annuaire
Le nouveau RDN ne doit pas déjà être attribué pour un autre objet
Le RDN doit être unique dans la branche de l’arbre où se trouve l’objet.
En cas de déplacement de l’objet, il ne doit pas avoir d’objets fils.
Avoir les droits sur l’objet et en cas de déplacement sur les branches concernées.
Salim Benayoune 63
Le modèle de services
L’abandon :
Salim Benayoune 64
Le modèle de services
Les extensions :
LDAP v3 prévoit la possibilité de soumettre à un serveur des opérations ne faisant
pas partie de celles listées précédemment
Avantage :
étendre les fonctionnalités d’un serveur d’annuaire tout en restant compatible v3
Exemple :
associer une signature électronique à toute modification d’objet
gestion de l’intégrité des transactions, comme dans une base de données
relationnelles.
mettre à jour tout un ensemble d’objets simultanément.
paramètres : l’identifiant de la requête et les éventuelles données associées.
Certains serveurs d’annuaire LDAP offrent une interface de programmation qui
offre le moyen de développer soi-même le traitement associé à une extension
Inconvénient : l’exécution de tels services ne sera possible que si le client connaît
leur existence et les paramètres dont ils ont besoin
Solution : Groupe de travail LDAPEXT
Salim Benayoune 65
Le modèle de services
Salim Benayoune 66
Le modèle de services
Avantage :
Distribuer la gestion d’un annuaire entre plusieurs serveurs LDAP distincts
Chaque serveur gère un sous-ensemble du DIT global
Permet la montée en charge en gardant de bonnes performances
Exemple :
Salim Benayoune 68
Le modèle de services
Salim Benayoune 69
Le modèle de services
Salim Benayoune 70
Le modèle de services
Gestion de la distribution
L’attribut ref de l’objet referral a pour valeur l’URL LDAP de l’entrée
désignée.
Les referrals sont traités au niveau du serveur en LDAP V2, par le client en V3
Salim Benayoune 71
Le modèle de sécurité
Salim Benayoune 72
Le modèle de sécurité
L’authentification :
LDAP est un protocole avec connexion : l’ouverture de session (bind) s’accompagne
d’une identification et, éventuellement, d’un mot de passe (optionnel en V3).
Anonymous authentification - accès sans authentification permettant d’atteindre
les données sans restrictions d’accès (V2, V3).
Root DN authentification - accès administrateur (tous les droits) (V2, V3).
Mot de passe en clair - un DN plus un password qui transite en clair sur le réseau
(V2, V3).
Kerberos V4 (V2)
Mot de passe + SSL (LDAPS) ou TLS - la session est chiffrée et le mot de passe ne
transite plus en clair.
Certificats sur SSL - échange de certificats SSL (clefs publiques/ privées).
Salim Benayoune 73
Le modèle de sécurité
La confidentialité :
traitée à travers le support de SSL (LDAPS) et nécessite l’usage d’un port
spécifique qui est le port 636 au lieu de 389
inconvénient :
pas possible de mixer des sessions chiffrées et non chiffrées sur le même port.
Solution :
StartTLS (via les extension de LDAP v3) qui permet de négocier l’utilisation de TLS
sur le port standard 389
Remarque :
TLS et aussi pris en charge par SASL, mais uniquement pour l’authentification et pas
pour toute la session.
Le chiffrement LDAP ne concerne que l’échange des données, et pas leur stockage
Salim Benayoune 74
Le modèle de sécurité
Le contrôle d’accès :
Le standard LDAP v3 ne décrit pas de mécanisme permettant de gérer les
habilitations
Salim Benayoune 75
Le modèle de sécurité
Le contrôle d’accès :
La gestion des habilitations consiste à décrire les droits d’accès de certains objets
de l’annuaire sur d’autres objets.
Cette description se fait à l’aide d’un ensemble de règles que l’on nomme
généralement ACL (Access Control Lists).
Chaque ACL comprend plusieurs règles, appelées ACI (Access Control Item ou
Information)
Salim Benayoune 76
Le modèle de sécurité
Le contrôle d’accès :
Règles communes au ACI dans les différents produits du marché :
Toute habilitation attribuée sur un objet de l’arbre est valable sur tous les objets
sous jacents.
Toute interdiction est prioritaire à toute autorisation dans une même branche.
Salim Benayoune 77
Le modèle de sécurité
Exemple : OpenLDAP
access to attribute=userPassword
by anonymous auth
by self write
by * none break
Salim Benayoune 78
Le modèle de duplication
Salim Benayoune 79
LDIF
Utilisé pour afficher ou modifier les données de la base suivant deux modes:
faire des imports/exports de base,
faire des modifications sur des entrées.
Le format utilisé est l’ASCII. Toute valeur d’attribut ou tout DN qui n’est pas
ASCII, est codé en base 64.
jpegPhoto::/9j/4AAQSkZJRgABAQAAAQABAAD//gBHQ1JFQVRPUjogWFYgVmVyc2lvbiAz
LjEwICBSZXY6IDEyLfgE2Lzk0ICBRdWFsaXR5ID0gNzUsIFNtb290aGluZyA9IDAK/9sAQw
AIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0N
B8nOT04MjwuMzQy/
Salim Benayoune 80
LDIF
Mode import :
dn: <distinguished name>
objectClass: <object class>
objectClass: <object class>
[...]
attribute type:<attribute value>
attribute type:<attribute value>
[...]
Salim Benayoune 81
LDIF
Mode modification :
dn: distinguished name
changetype identifier
change operation identifier
list of attributes...
-
change operation identifier
list of attributes ...
Salim Benayoune 82
URLs de LDAP
ldap[s]://<hostname>:<port>/<base_dn>?<attributes>?<scope>?<filter>
<base_dn> : DN de l’entrée qui est le point de départ de la recherche
<attributes> : les attributs que l’on veut consulter
<scope> : la profondeur de recherche dans le DIT à partir du <base_dn>
- base : s’arrête au niveau courant (par défaut)
- one : descend d’un niveau
- sub : parcourt tous les sous-niveaux
<filter> : filtre de recherche, par défaut (objectClass=*)
ldap://[Link]/o=worldcompany?mail,uid?sub?(sn=Smith)
Salim Benayoune 83
API
Salim Benayoune 84