Title: Survol de LDAP
1 2Plan
- Dessine moi un annuaire...
- Historiques
- Ce que définit LDAP (ou presque)
- LDIF
- Serveurs
- Bibliographie
3Dessine moi un annuaire...
- Exemples d'annuaires électroniques
- DNS
- /etc/passwd
- whois
- whois
- NIS
- PH
- X.500
4Dessine moi un BON annuaire...
- Qualité des informations sources fiables, mise
à jour rapides - Informations protégées
- Accessible par les applications
- Gestion en partie automatisée
- Rapide en lecture
- Fiable et disponible
5Historique X.500
- Projet ISO Ã vocation d'annuaire global et
distribué - racine d'un annuaire à réserver
- modèle de donnés objet
- ne s'appuie par sur TCP/IP
- Première version en 1988, grosse révision en 1993
- Pas d'essor lourd, complexe...
6Historique LDAP
- LDAP à l'origine un frontal à x500 sur TCP/IP
- Lightweight DAP
- Directory Access Protocol de X.500
- Version 3 Ã ce jour
- v1 RFC 1487 Â X.500 Lightweight Directory
Access Protocol. , juillet 1993 - v2 RFC 1777,  Lightweight Directory Access
Protocol. , mars 1995 - v3 RFC 2251-2256, déc. 1997 RFC 2228-2830,
mai 2000 RFC 3377, sept. 2002
7Serveur historique
-  standalone LDAP en 1995 à l'université de
Michigan - Aura pour héritiers
- OpenLDAP
- Serveur Netscape (?)
8Ce que définit LDAP
- LDAP définit
- Un format et un protocole de communication
- Un modèle de données
- Un modèle de nommage
- Un modèle fonctionnel
- LDAP définit presque...
- Un modèle de sécurité
- Un modèle de réplication
9Ce que définit LDAP
- LDAP définit
- Un format et un protocole de communication
- Un modèle de données
- Un modèle de nommage
- Un modèle fonctionnel
- LDAP définit presque...
- Un modèle de sécurité
- Un modèle de réplication
10Format de données et protocole de communication
- Données transportées en utilisant
- ASN.1
- BER (LBER)
- Protocole de communication client-serveur
- Une connexion permet de faire passer plusieurs
requètes - Protocole de communication serveur-serveur
-  refferal renvoi sur un autre annuaire
11Ce que définit LDAP
- LDAP définit
- Un format et un protocole de communication
- Un modèle de données
- Un modèle de nommage
- Un modèle fonctionnel
- LDAP définit presque...
- Un modèle de sécurité
- Un modèle de réplication
12Modèle de données
- Dans l'annuaire, des entrées
- Le modèle de données vise à définir la nature des
entrées que l'on va trouver dans l'annuaire - Les entrées
- sont des objets
- appartiennent à des classes
- on les nomme Directory Service Entry (DSE)
13Classe
- Une classe
- est constituées d'attributs
- obligatoires ou optionnels
- est typée
- structurelle, auxiliaire ou abstraite
- s'inscrit dans un arbre d'héritage de classes
- LDAP définit des classes d'après X.500
- On peut en fabriquer de nouvelles !
14Arbre d'héritage des classes des RFC 2256 et 2798
- top
- alias
- country
- locality
- organization
- organizationalUnit
- person
- organizationalPerson
- inetOrgPerson
- residentialPerson
- organizational role
- groupOfName
- ...
15Exemple de classes
- inetorgPerson
- ( 2.16.840.1.113730.3.2.2 NAME
'inetOrgPerson' SUP organizationalPerson
STRUCTURAL MAY ( audio
businessCategory carLicense departmentNumber
displayName employeeNumber
employeeType givenName homePhone
homePostalAddress initials jpegPhoto
labeledURI mail manager mobile o pager
photo roomNumber secretary uid
userCertificate x500uniqueIdentifier
preferredLanguage userSMIMECertificate
userPKCS12 ))
16Types d'attributs
- Pour définir un type d'attribut, il nous faut
- décider s'il est mono ou multi-valué
- lui donner une syntaxe prédéfine
- le munir de règles de comparaison
- éventuellement le faire hériter d'un autre type
d'attribut - Deux familles d'attributs
- attributs utilisateurs
- attributs opérationnels
17Exemples de déclarations de types d'attributs
- attributetype ( 1.3.6.1.4.1.12274.1.1.1.5 NAME
'aglnDate' DESC 'Date AGALAN format
YYYYMMDDHHMMSSZ ou YYYYMMDDZ' EQUALITY
generalizedTimeMatch ORDERING
generalizedTimeOrderingMatch SYNTAX
1.3.6.1.4.1.1466.115.121.1.24 ) - attributetype ( 1.3.6.1.4.1.12274.1.1.1.6 NAME
'aglnAdmissionDate' DESC 'Date de declaration
de l entree' SUP aglnDate SINGLE-VALUE )
18Syntaxes (RFC 2252)
- Value being represented H-R OBJECT
IDENTIFIER
ACI Item
N 1.3.6.1.4.1.1466.115.121.1.1
Access Point Y
1.3.6.1.4.1.1466.115.121.1.2 Attribute Type
Description Y 1.3.6.1.4.1.1466.115.121.1.3
Audio N
1.3.6.1.4.1.1466.115.121.1.4 Binary
N 1.3.6.1.4.1.1466.115.121.1.5
Bit String Y
1.3.6.1.4.1.1466.115.121.1.6 Boolean
Y 1.3.6.1.4.1.1466.115.121.1.7
Certificate N
1.3.6.1.4.1.1466.115.121.1.8 Certificate List
N 1.3.6.1.4.1.1466.115.121.1.9
Certificate Pair N
1.3.6.1.4.1.1466.115.121.1.10 Country String
Y 1.3.6.1.4.1.1466.115.121.1.11
DN Y
1.3.6.1.4.1.1466.115.121.1.12 Data Quality
Syntax Y 1.3.6.1.4.1.1466.115.121.1.1
3 Delivery Method Y
1.3.6.1.4.1.1466.115.121.1.14 Directory String
Y 1.3.6.1.4.1.1466.115.121.1.15
... Generalized Time Y
1.3.6.1.4.1.1466.115.121.1.24 Guide
Y 1.3.6.1.4.1.1466.115.121.1.25
IA5 String Y
1.3.6.1.4.1.1466.115.121.1.26 INTEGER
Y 1.3.6.1.4.1.1466.115.121.1.27
JPEG N
1.3.6.1.4.1.1466.115.121.1.28 ...
19OID
- Tous ces objets (classes attributs, syntaxes...)
sont identifiés de façon unique par un OID
( Object Identifier ) géré par l'IANA - On peut réserver un numéro dans une branche
particulière - http//www.iana.org/assignments/enterprise-numbers
- Exemple
- 1.3.6.1.4.1.7140INPG, Institut National
Polytechnique de Grenoble
20OID Agalan
- Pas de Private Enterprise Number AGALAN
attribué par l'IANA. Utilisation de celui de
l'UJF. 1.3.6.1.4.1.12274 UJF
1.3.6.1.4.1.12274.1 AGALAN
1.3.6.1.4.1.12274.1.1 LDAP schéma v1
1.3.6.1.4.1.12274.1.1.1 types d'attributs
1.3.6.1.4.1.12274.1.1.1.1 attribut
aglnPersonStatus 1.3.6.1.4.1.12274.1.1.1.2
aglnGroupStatus 1.3.6.1.4.1.12274.1.1.1.3
aglnPassword... 1.3.6.1.4.1.12274.1.1.1.34
aglnSearchCommonName 1.3.6.1.4.1.12274.1
.1.2 classes d'objets 1.3.6.1.4.1.12274.1.1.
2.1 classe aglnPerson 1.3.6.1.4.1.12274.1.
1.2.2 classe aglnGroup 1.3.6.1.4.1.12274.1
.1.2.3 classe aglnInstGroup
1.3.6.1.4.1.12274.1.1.2.4 classe
aglnConnector 1.3.6.1.4.1.12274.1.1.2.5
classe aglnMachine ...
21Schéma
- L'ensemble de ces objets constituent le schéma
que connaît le serveur - Classes
- Types d'attribut
- Syntaxes
- etc.
22Exemple d'entrée
uidneigeb,oupeople,ouinpg,dcagalan,dcorg obje
ctClass top objectClass person objectClass
organizationalPerson objectClass
inetOrgPerson objectClass aglnPerson objectClass
shadowAccount objectClass posixAccount givenName
Blanche sn Neige aglnPatronymicName Neige cn
Blanche Neige aglnSearchCommonName
Blanche.Neige aglnDateOfBirth 193712210000Z ou
INPG aglnOrganizationUid harp-002 employeeType
P
aglnAdmissionDate 200211150000Z aglnExpiryDate
200212310000Z aglnPersonStatus
OFFI aglnAuthenticationDate 200211150000Z userPas
sword ... aglnPassword ... aglnMailStatus
normal uid neigeb homeDirectory
neigeb uidNumber 270838 gidNumber 270838 mail
Blanche.Neige_at_grenet.fr
23Ce que définit LDAP
- LDAP définit
- Un format et un protocole de communication
- Un modèle de données
- Un modèle de nommage
- Un modèle fonctionnel
- LDAP définit presque...
- Un modèle de sécurité
- Un modèle de réplication
24Modèle de nommage
- Ranger les entrées dans une structure
hiérarchique - Directory Information Tree (DIT)
- Les nommer de façon distincte
- RDN
- DN
25Directory Information Tree
Dcagalan,dcorg
- Présence d'un suffixe ( Base DN )
- Les noeuds sont des objets
Ou upmf
Ou inpg
Ou ujf
Ou ...
Ou machines
Ou connecteurs
Ou people
Ou groups
Uid kassovim
Uid tautoua
cn esisar-3A- TP-GÉlec-02
cn hmg-1A
26RDN DN
- RDN (Relative Distinguished Name)
- mailAudrey.Tautou_at_inpg.fr, uidtautoua, etc.
- Attention la valeur de l'attribut utilisé au
RDN et le RDN lui-même ne sont pas synchronisés - DN (Distinguished Name)
- RDN chemin dans l'arborescence en remontant
- attribut du RDN Ã choisir pour que tout DN soit
unique(Penser aux déplacements éventuels dans le
DIT !) - uidtautoua,oupeople,ouinpg,dcagalan,dcorg
27Deux objets particuliers
- objet  aliasÂ
- pointeur sur une autre entrée (DN)
- objet  referralÂ
- pointe sur un autre serveur (URL LDAP)
28Ce que définit LDAP
- LDAP définit
- Un format et un protocole de communication
- Un modèle de données
- Un modèle de nommage
- Un modèle fonctionnel
- LDAP définit presque...
- Un modèle de sécurité
- Un modèle de réplication
29Modèle fonctionnel
- Définit les opérations que l'on peut effectuer
sur l'annuaire - Connexion au serveur
- Déconnexion du serveur
- Recherche d'entrées
- Modification d'une entrée
- Abandon des opérations en cours
- Â Extended OperationsÂ
- Â Control extensionsÂ
30Opérations
- Connexion au serveur ( bind )
- Paramètres de connexion
- Version de LDAP demandé (v2, v3)
- DN sous lequel on veut se connecter
- Type d'authentification
- Déconnexion du serveur ( unbind )
31Opérations
- Recherche d'entrées
- Paramètres de recherche
- base object (DN)
- scope
- derefAliases
- sizeLimit
- timeLimit
- typesOnly
- filter
- attributes
32 Scope de recherche
Dcagalan,dcorg
Ou upmf
Ou inpg
Ou ujf
Ou ...
Ou machines
Ou connecteurs
Ou people
Ou groups
Uid kassovim
Uid tautoua
cn esisar-3A- TP-GÉlec-02
cn hmg-1A
33 Scope de recherche
Dcagalan,dcorg
Ou upmf
Ou inpg
Ou ujf
Ou ...
Ou machines
Ou connecteurs
Ou people
Ou groups
Uid kassovim
Uid tautoua
cn esisar-3A- TP-GÉlec-02
cn hmg-1A
34 Scope de recherche
Dcagalan,dcorg
Ou upmf
Ou inpg
Ou ujf
Ou ...
Ou machines
Ou connecteurs
Ou people
Ou groups
Uid kassovim
Uid tautoua
cn esisar-3A- TP-GÉlec-02
cn hmg-1A
35Filtres de recherche
- Type de recherche d'entrées
- égalité, sous-chaîne, approximation, plus
grand/petit ou égal, présence... - Opérateurs de combinaison des filtres
- , , !
- Exemple
- ((snNeige)(mailgrenet))
- Ne pas oublier de positionner des index !
36Opérations
- Recherche particulière informations sur le
serveur - filtre  (objectClass) , DN null
- Informations récupérées
- namingContexts
- subschemaSubentry
- altServer
- supportedExtension
- supportedControl
- supportedSASLMechanisms
- supportedLDAPVersion
37Opérations
- Modification d'une entrée
- Paramètres de la modification
- Object à modifier (DN)
- Liste d'opérations sur les attributs
- type d'opération
- ajout
- suppression
- remplacement
- type d'attribut
- valeurs
38Opérations
- Ajout d'une entrée
- Paramètres de l'ajout
- DN souhaité pour l'entrée
- Liste d'attributs et de leurs valeurs
- Suppression d'une entrée
- Seul paramètre le DN de l'entrée à supprimer
- Ne supprime que les feuilles du DIT
39Opérations
- Modification du DN d'une entrée
- Déplacement de l'entrée dans le DIT
- N'est pas faite pour le déplacement entre
serveurs - Comparaison
- Paramètres de la comparaison
- Entrée à comparer (DN)
- Liste d'atributs avec leurs valeurs
- OK si les attributs sont de valeurs comparables
40Opérations
- Abandon
- Il s'agit d'abandonner les opérations en cours
- Â Extended OperationsÂ
- Permettent des opérations prévues ou non dans les
RFC - Chaque opération doit être enregistrée sous un
OID - Exemple
- TLS avec opération  start TLSÂ
41Ce que définit LDAP
- LDAP définit
- Un format et un protocole de communication
- Un modèle de données
- Un modèle de nommage
- Un modèle fonctionnel
- LDAP définit presque...
- Un modèle de sécurité
- Un modèle de réplication
42Modèle de sécurité
- Authentification chiffrement des transactions
- Authentification lors de la connexion au serveur
- Types de connexion
- Anonyme
- rootDN (mode administrateur)
- DN mot de passe en clair
- Mot de passe ou certificats (clefs asymétriques)
sur SSL/TLS - via opération étendues
- Mécanisme externe via SASL
43ACL
- ACL pas définies par le protocole
- Peut différer d'un serveur à l'autre
- Forme générale (finesse attribut)
- ltaccess directivegt access to
ltwhatgt by ltwhogt ltaccessgt ltcontrolgt - RFC 2820 Â Access Control Requirements for
LDAP. , mai 2000 - statut INFORMATIONAL seulement
44ACL
- Exemples simples
- access to by read
- access to by self write by
anonymous auth by read by read
45ACL syntaxe OpenLDAP
- ltaccess directivegt access to ltwhatgt
- by ltwhogt ltaccessgt ltcontrolgt
- ltwhatgt dn.lttarget
stylegtltregexgt - filterltldapfiltergt
attrsltattrlistgt - lttarget stylegt regex base one
subtree children - ltattrlistgt ltattrgt ltattrgt ,
ltattrlistgt - ltattrgt ltattrnamegt entry children
- ltwhogt anonymous users self
- dn.ltsubject stylegtltregexgt
- dnattrltattrnamegt
- group/ltobjectclassgt/ltattrnamegt
.ltbasic stylegtltregexgt - peername.ltbasic
stylegtltregexgt - sockname.ltbasic
stylegtltregexgt - domain.ltbasic stylegtltregexgt
- sockurl.ltbasic stylegtltregexgt
- setltsetspecgt
- aciltattrnamegt
- ltsubject stylegt regex exact base
one subtree children - ltbasic stylegt regex exact
46Ce que définit LDAP
- LDAP définit
- Un format et un protocole de communication
- Un modèle de données
- Un modèle de nommage
- Un modèle fonctionnel
- LDAP définit presque...
- Un modèle de sécurité
- Un modèle de réplication
47Modèle de réplication
- Pas de standard...
- Groupe de travail IETF LDUP
- Pour répliquer l'annuaire entier ou une branche
du DIT seulement - Réplication au fil de l'eau ou non
- Selon serveurs, réplication
- single master
- multiple master
- cascading replication
48LDIF
- LDAP Data Interchange Format (RFC2849)
- Représentation ASCII Base64 des entrées
- Mode import
- comment dn ltdistinguished namegt attribute
typeltattribute value ASCIIgtattribute
typeltattribute value BASE64gt - Mode modification
- dn ltDNgtchangetype identifier (opération sur
l'entrée)change operation identifier (opération
sur attributs)list of attributes-change
operation identifier...
49LDIF exemple
- Bjorn's Entrydn cnBjorn J Jensen,
dcexample, dccomcn Bjorn J Jensencn Bjorn
JensenobjectClass personsn Jensen Base64
encoded JPEG photojpegPhoto /9j/4AAQSkZJRgABAAA
AAQABAAD/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0o
OjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ
2P/2wBDARESEhgVG
50LDIF exemple
- Modify an entry add an additional value to the
postaladdress attribute, completely delete the
description attribute, replace the
telephonenumber attribute with two values, and
delete a specific value from the
facsimiletelephonenumber attributedn
cnPaula Jensen, ouProduct Development,
dcairius, dccomchangetype modifyadd
postaladdresspostaladdress 123 Anystreet
Sunnyvale, CA 94086-delete description - -
- replace telephonenumber
- telephonenumber 1 408 555 1234
- telephonenumber 1 408 555 5678
- -
- delete facsimiletelephonenumber
- facsimiletelephonenumber 1 408 555 9876
- -
51Serveurs
- eDirectory
- iPlanet
- OpenLDAP
- ...
52Avec tout ces éléments...
- Quels choix effectuer ?
- Quel schéma ?
- Utiliser les classes existantes comme bases pour
en créer de nouvelles - Quel DIT ?
- Le plus plat possible selon RFC 1617
- ...
- Garder à l'esprit que les choix techniques ne
résolvent pas tous les aspects fonctionnels
53RFC
- RFC2251 Â Lightweight Directory Access Protocol
(v3)Â - RFC2252 Â Lightweight Directory Access Protocol
(v3) Attribute Syntax Definitions - RFC2253  Lightweight Directory Access Protocol
(v3) UTF-8 String Representation of
Distinguished Names - RFC2254  The String Representation of LDAP
Search Filters - RFC2255  The LDAP URL FormatÂ
- RFC2256 Â A Summary of the X.500(96) User
Schema for use with LDAPv3Â - RFC2829 Â Authentication Methods for LDAPÂ
- RFC2830 Â Lightweight Directory Access Protocol
(v3) Extension for Transport Layer Security - RFC3377  Lightweight Directory Access Protocol
(v3) Technical Specification. - RFC1617  Naming and Structuring Guidelines for
X.500 Directory Pilots. (Status INFORMATIONAL) - RFC2247  Using Domains in LDAP/X.500
Distinguished Names. - RFC2307  An Approach for Using LDAP as a
Network Information Service. - RFC2798  Definition of the inetOrgPerson LDAP
Object Class. (Status INFORMATIONAL) - RFC2820  Access Control Requirements for
LDAP. (Status INFORMATIONAL) - RFC2891  LDAP Control Extension for Server
Side Sorting of Search Results. - ...
54Bibliographie