Vous êtes sur la page 1sur 167

LDAP : concepts, dploiement

Laurent Mirtain
C. Claveleira, C. Gross
Journes LDAP - 27 et 28 septembre 2000

Plan
Concepts
Dployer un service LDAP
Les logiciels serveurs
Les clients LDAP
Les outils de dveloppement
Les applications de LDAP aujourdhui et demain
Bibliographie

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 2

Concepts
Concepts
Quest-ce quun annuaire ?
Historique
LDAP

Dployer un service LDAP


Les logiciels serveurs
Les clients LDAP
Les outils de dveloppement
Les applications de LDAP aujourdhui et demain
Bibliographie

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 3

Concepts : quest-ce quun annuaire ?


Un conteneur dinformations organises
Exemples dannuaires courants
annuaire tlphonique
carnet dadresses
catalogue de vente
guides tl
Ce sont des annuaires offline

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 4

Concepts : quest-ce quun annuaire ?


Un service d'annuaire lectronique, c'est en plus...
un protocole qui permet l'accs au contenu
une syntaxe qui permet dinterroger la base
et aussi
un modle de duplication
un modle de distribution des donnes

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 5

Concepts : quest-ce quun annuaire ?


Spcificits des annuaires lectroniques
dynamiques (informations changent -> + jour)
souples (changement ais type et organisation des donnes)
peuvent tre scuriss (qui voit quoi)
peuvent tre personaliss (faon de prsenter les donnes, action sur ses propres
donnes,...)

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 6

Concepts : quest-ce quun annuaire ?


Caractristiques compares des annuaires et base de donnes
rapport lecture/criture (beaucoup) plus lev pour les annuaires
annuaires plus facilement extensibles (types de donnes)
diffusion beaucoup plus large chelle
distribution des donnes entre serveurs plus facile avec les annuaires
plus grande duplication des informations des annuaires (+ fiable,
+performant, + proche des clients)
importance des standards -> LDAP
performances globales des annuaires plus leves (en lecture)

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 7

Concepts : quest-ce quun annuaire ?


exemple de services d'annuaires que nous utilisons dj : le DNS
pour obtenir lurl http://www.sncf.com/ il faut obtenir ladresse du serveur
www.sncf.com -> requte DNS

DNS est un exemple d'un service d'annuaire global


il est distribu entre des serveurs cooprants
il a un espace de nommage uniforme

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 8

Concepts : quoi peut servir un annuaire en ligne ?


chercher (et trouver) des informations mieux et plus vite
pour des humains ou des applications
grer (carnets dadresses, comptes utilisateurs, profils,...)
de base de donne simple
stocker et diffuser des certificats dans une PKI

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 9

Concepts : ce que nest pas un annuaire


appropri de frquentes critures
destin manipuler des donnes volumineuses
un substitut un serveur FTP, un systme de fichiers,...

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 10

Concepts : historique
Historiquement sont apparus :
Bases de comptes de systmes multi-utilisateurs (70-80)
Unix /etc/passwd,
IBM MVS PROFS
...
Grapevine (Xerox, dbut 80)
Internet Domain Name System (84)
service de nommage rseau
spcifique mais efficace
WHOIS
bases de contacts

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 11

Concepts : historique
Les annuaires ddis aux applications
Lotus cc:Mail, Notes
Unix sendmail /etc/aliases
Microsoft Exchange
Les annuaires Internet (offrent de plus en plus un accs LDAP)
Bigfoot, Yahoos Four11, AnyWho (AT&T), Schwitboard
Les annuaires systme-rseau (NOS)
Sun NIS, NIS+
Novell NetWare Directory Service (93) (proche dX500)
Microsoft Active Directory (natif LDAP)
Les annuaires multi-usage
X.500 (88-93-97)
WHOIS++ (93)
CSO (PH)
LDAP (93)
CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 12

Concepts : historique : X.500


Standard conu par les oprateurs tlcom pour interconnecter leurs
annuaires tlphoniques.
Destin devenir LE service dannuaire GLOBAL distribu, normalis
et fdrateur.
Mais conu aussi pour rpondre tout type de besoin dannuaire grce un modle de donnes de type objet et extensible.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 13

Concepts : historique : X.500


X.500 dfinit :
les rgles pour nommer les objets et les entits
les protocoles pour fournir le service dannuaire
un mcanisme dauthentification.
Master DSA1
(Directory Sys-

Master DSA2
DSP
(Directory System
Protocol)

DAP
(Directory
Access Protocol)

DAP

DUA1
(Directory User Agent)

DISP
(Directory Information
Shadowing Protocol)

DAP
Shadow DSA1

DUA2

X500 = suite (consquente) : X501, X509, X511, X518, X519, X520,


X521, X525

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 14

Concepts : historique : X.500


Exemple dannuaire X.500 :
NameFlow Paradise (Piloting An inteRnationAl DIrectory SErvice),
SURFNET (nl)...
Logiciels DSA X.500
ISODE Consortium/Quipu,
NeXor/XT-Quipu,
Control Data/Rialto Global Directory Server

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 15

Concepts : historique : X.500


Qualits et dfauts dX500 :
Atouts dX500 :
scalability, fonctions de recherche volues, distribu (donnes et administration),
ouvert

Dfauts dX500 :
implmentations (trs) lourdes, bugges et difficilement interoprables, bas sur les
protocoles ISO, contraire la culture internet

Echec : les ambitions dX500 nont pas t atteintes

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 16

Concepts : historique : LDAP


En 1993 Lightweight Directory Access Protocol (LDAP) est n de
ladaptation et du dgraissage de X.500 DAP au protocole TCP/IP.
Deux groupes de travail aboutissent 2 produits fonctionnant comme
frontal X.500 :
Directory Assistance Service (DAS) : RFC 1202
Directory Interface to X.500 Implemented Efficiently (DIXIE) : RFC 1249
qui convergent finalement vers le standard IETF LDAP.
LDAPv1 : RFC 1487
LDAPv2 : RFC 1777
LDAPv3 : RFC 2251
LDAP garde beaucoup daspects de X.500 dans les grandes lignes, mais
va dans le sens de la simplification et de la performance

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 17

Concepts : historique : LDAP


LDAP est initialement un frontal daccs des bases dannuaires
X.500 (translateur LDAP/DAP).
Devient un annuaire natif (standalone LDAP) utilisant sa propre base
de donnes, sous limpulsion dune quipe de lUniversit du Michigan (U-M LDAP 3.2 en 95).
(Wengyik Yeong, Steve Kille, Colin Robbins, Tim Howes, Marc Wahl).
En 96, apparaissent les premier serveurs commerciaux.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 18

Concepts : historique, autres annuaires


WHOIS++ (93)
Whois utilisait une seule base, Whois++ introduit la notion de bases rparties relies par le Whois++ index service.
CSO
Annuaire dadresses lectroniques cr par luniversit de lIllinois, plus
connu sous le nom de PH.
Popularis par Eudora.
NETFIND, SOLO (Simple Object LOok)...
Des clients capables dinterroger diffrents types de Directory Servers
(notion de Meta-Directory Service).

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 19

Concepts : LDAP
Concepts
Quest-ce quun annuaire ?
Historique
LDAP
Protocole
Modle dinformation
Modle de nommage
Modle fonctionnel
Modle de scurit
Modle de duplication
APIs
LDIF

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 20

Concepts : LDAP
LDAP dfinit :
le protocole daccs -- comment accder linformation contenue
dans lannuaire,
un modle dinformation -- le type dinformations contenues dans lannuaire,
un modle de nommage -- comment linformation est organise et rfrence,
un modle fonctionnel -- comment on accde et met jour linformation,
un modle de scurit -- comment donnes et accs sont protgs,
un modle de duplication -- comment la base est rpartie entre serveurs,
des API -- pour dvelopper des applications clientes,
LDIF -- un format dchange de donnes.
CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 21

Concepts : LDAP, le protocole


Le protocole dfinit :
Comment stablit la communication client-serveur :
commandes pour se connecter ou se dconnecter, pour rechercher, comparer,
crer, modifier ou effacer des entres.

Comment stablit la communication serveur-serveur :


changer leur contenu et le synchroniser (replication service)
crer des liens permettant de relier des annuaires les uns aux autres (referral service).

Le format de transport de donnes :


pas lASCII (comme pour http, smtp...) mais le Basic Encoding Rules (BER), sous
une forme allge (appele LBER : Lightweight BER)

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 22

Concepts : LDAP, le protocole


Le protocole dfinit (suite) :
Les mcanismes de scurit :
mthodes de chiffrement et dauthentification
mcanismes de rgles daccs aux donnes.
Les oprations de base:
interrogation : search, compare
mise jour : add, delete, modify, rename
connexion au service : bind, unbind, abandon

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 23

Concepts : LDAP, le protocole


Communication client-serveur :
normalise par lIETF : la version actuelle est LDAPv3 (RFC2251).
Communication serveur-serveur :
le referral service est dfinit par LDAPv3,
le replication service est encore en cours de normalisation sous la dnomination
LDAP Duplication Protocol (LDUP)

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 24

Concepts : LDAP, le protocole


possibilit davoir une seule connexion pour passer plusieurs requtes

1. connexion et authentification
2. rsultat authentification
3. recherche
4. rponse entre #1
5. rponse entre #2

Client LDAP

6. message de rsultat
7. abandon session

Serveur LDAP

8. dconnexion

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 25

Concepts : LDAP, le protocole


LDAPv3 est conu pour tre extensible sans avoir modifier la norme
grce 3 concepts :
LDAP extented operations : rajouter une opration, en plus des neuf oprations de
base.
LDAP controls : paramtres supplmentaires associs une opration qui en modifient le comportement.
Simple Authentification and Security Layer : couche supplmentaire permettant
LDAP dutiliser des mthodes dauthentification externes.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 26

Concepts : LDAP, modle dinformation


Le modle dinformation dfinit le type de donnes pouvant tre stockes dans lannuaire.
Lentre (Entry) = lement de base de lannuaire. Elle contient les informations sur
un objet de lannuaire.
Ces informations sont reprsentes sous la forme dattributs dcrivant les caractristiques de lobjet.
Toute sorte de classe dobjet (rel ou abstrait) peut tre reprsente.
Le schma de lannuaire dfinit la liste des classes dobjets quil connat.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 27

Concepts : LDAP, modle dinformation


Schma
Le Directory schema est lensemble des dfinitions relatives aux objets quil sait grer (~typedef).
Le schma dcrit les classes dobjets, les types des attributs et leur
syntaxe.
Chaque entre de lannuaire fait obligatoirement rfrence une classe dobjet du schma et ne doit contenir que des attributs qui sont
rattachs au type dobjet en question.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 28

Concepts : LDAP, modle dinformation


Attributs
Un type dattribut (ou attribut) est caractris par :
Un nom, qui lidentifie
Un Object Identifier (OID), qui lidentifie galement
Sil est mono ou multi-valu
Une syntaxe et des rgles de comparaison (matching rules)
Un format ou une limite de taille de valeur qui lui est associe
Tableau 1 : Exemple dattributs dune entre

type dattribut

valeur dattribut

cn: Barnab Dupond


uid: bdupond
telephonenumber: +33 (0)1 2345 6789
mail: Barnabe.Dupond@acme.com
roomnumber: C105

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 29

Concepts : LDAP, modle dinformation


Les types dattributs ont une syntaxe qui sert dcrire le format de donnes et comment lannuaire compare ces valeurs lors dune recherche
sur critre.
Tableau 2 : Exemple de syntaxes dattributs

syntaxe LDAP

syntaxe X.500

description

cis

caseIgnoreMatch

texte, la casse nest pas prise en compte

ces

caseExactMach

texte, la casse intervient

tel

telephoneNumberMatch

texte reprsentant un numro de tel

int

integerMatch

nombre entier, comparaison numrique

dn

distinguishedNameMatch

nom dentre, rgles spcifiques

bin

octetStringMatch

donnes binaires, comparaison byte/byte

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 30

Concepts : LDAP, modle dinformation


2 catgories dattributs :
User attributes : attributs normaux manipuls par les utilisateurs (givenname,
telephoneNumber),

Operational attributes : atttributs systmes utilis par le serveur (modifiersname)


Certains serveurs LDAP respectent les standards X.500 de hirarchisation des attributs :
permettent de dcrire un attribut comme tant un sous-type dun attribut super-type
et dhriter ainsi de ses caractristiques.
Exemple : cn, sn, givenname sont des sous-types de lattribut super-type name

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 31

Concepts : LDAP, modle dinformation


Classes dobjets
Les classes dobjets modlisent des objets rels ou abstraits en les caractrisant par une liste dattributs optionnels ou obligatoires. Une classe
dobjet est dfinie par :
Un nom, qui lidentifie
Un OID, qui lidentifie galement
Des attributs obligatoires
Des attributs optionnels
Un type (structurel, auxiliaire ou abstrait)
Exemples de classes dobjet :
une organisation (o),
ses dpartements (ou),
son personnel (organizationalPerson),
ses imprimantes (device),
ses groupes de travail (groupofnames).

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 32

Concepts : LDAP, modle dinformation


Le type dune classe est li la nature des attributs quelle utilise :
Une classe structurelle correspond la description dobjets courants
de lannuaire : les personnes, les groupes, les units organisationnelles... Une entre appartient toujours une classe dobjet structurelle.
Une classe auxiliaire permet de rajouter des informations complmentaires des objets structurels.
Une classe abstraite dsigne des objets basiques du schma (top,
alias).

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 33

Concepts : LDAP, modle dinformation


Les classes dobjets forment une hirarchie, au sommet de laquelle se
trouve lobjet top.
top

organizationalUnit

person

organizationalPerson

inetOrgPerson

Chaque objet hrite des proprits (attributs) de lobjet dont il est le fils.
On prcise la classe dobjet dune entre laide de lattribut objectClass.
Il faut obligatoirement indiquer la parent de la classe dobjet en partant de lobjet
top et en passant par chaque anctre de lobjet.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 34

Concepts : LDAP, modle dinformation


Par exemple, lobjet inetOrgPerson la filiation suivante :
objectClass:
objectClass:
objectClass:
objectClass:

top
person
organizationalPerson
inetOrgPerson

Lobjet person a comme attributs : commonName, surname, description, seeAlso, telephoneNumber, userPassword
Lobjet fils organizationalPerson ajoute des attributs comme : organizationUnitName, title,
postalAddress...
Lobjet petit-fils inetOrgPerson lui rajoute des attributs comme : mail, labeledURI, uid
(userID), photo...

Une entre peut appartenir un nombre non limit de classes dobjets.


Les attributs obligatoires sont la runion des attributs obligatoires de chaque classe.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 35

Concepts : LDAP, modle dinformation


Exemple de classes dobjets :
Entry Type

Required Attributes

Optional Attributes

inetOrgPerson
(defines entries for a person)

commonName (cn)
surname (sn)
objectClass

businessCategory
carLicense
departmentNumber
description
employeeNumber
facsimileTelephone
Number
givenName
mail
manager
mobile
organizationalUnit (ou)
pager
postalAddress
roomNumber
secretary
seeAlso
telephoneNumber
title
labeledURI
uid

organizationalUnit
(defines entries for organizational units)

ou
objectClass

businessCategory
description
facsimileTelephoneNumber
location (l)
postalAddress
seeAlso
telephoneNumber

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 36

Concepts : LDAP, modle dinformation


OIDs
Les classes dobjets et les attributs
sont normaliss par le RFC2256 afin de garantir linteroprabilit entre logiciels.
Sont rfrences par un object identifier (OID) unique dont la liste est tenue jour
par lInternet Assigned Numbers Authority (IANA).

Un OID est une squence de nombres entiers spars par des points.
Les OIDs sont allous de manire hirarchique :
seule, lautorit qui a dlgation sur la hirarchie 1.2.3 peut dfinir la signification
de lobjet 1.2.3.4 . Par exemple :
2.5
2.5.4
2.5.6
1.3.6.1
1.3.6.1.4.1
1.3.6.1.4.1.4203
1.3.6.1.4.1.7135
CRU-UREC

fait rfrence au service X.500


est la dfinition des types dattributs
est la dfinition des classes dobjets
Internet OID
IANA-assigned company OIDs, utilis pour entreprises prives
OpenLDAP
pour le CRU
Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 37

Concepts : LDAP, modle dinformation


Dfinition des schmas
Les schmas existants sont issus de X.500, plus des ajouts de LDAP ou
dautres consortium industriels.
Il existe plusieurs formats pour dcrire un schma LDAP :
slapd.conf : fichier de configuration utilis par U-M slapd, OpenLDAP et Netscape
Directory.
ASN.1 : grammaire utilise dans les documents dcrivant les standards LDAP et
X.500.
LDAPv3 : LDAPv3 introduit lobligation pour un serveur de publier son schma via
LDAP en le stockant dans lentre subschema.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 38

Concepts : LDAP, modle dinformation


Exemple de syntaxe slapd.conf :
attribute NAME [ALIASES] [OID] SYNTAXID [OPTIONS]

attribute cn commonName 2.5.4.3 cis


objectclass NAME [oid OID] [superior SUP] [requires REQATTRS] [allows ALLOWATTTRS]

objectclass person
oid 2.5.6.6
superior top
requires
sn,
cn
allows
description,
seeAlso,
telephoneNumber,
userPassword

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 39

Concepts : LDAP, modle dinformation


Exemple de syntaxe ASN.1 :
ub-common-name INTEGER ::= 64
commonName ATTRIBUTE
WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
(SIZE (1..ub-common-name))
::= {attributeType 3}
person OBJECT-CLASS ::= {
SUBCLASS OF top
MUST CONTAIN {
commonName,
surname}
MAY CONTAIN {
description,
seeAlso,
telephoneNumber,
userPassword}
::= {objectClass 6}

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 40

Concepts : LDAP, modle dinformation


Exemple de syntaxe LDAPv3 (attribut cn et objet person)
attributetypes: (2.5.4.3 NAME cn DESC commonName Standard
Attribute SYNTAX 1.3.5.1.4.1.1466.115.121.1.15)
objectclass: (2.5.6.6 NAME person DESC standard person
Object Class SUP top
MUST (objectclass $ sn $ cn )
MAY ( description $ seealso $ telephonenumber $ userpassword )
)

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 41

Concepts : LDAP, modle dinformation


Schema checking
Quand une entre est cre, le serveur vrifie si sa syntaxe est conforme
sa classe ou ses classes dappartenance : cest le processus de Schema Checking.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 42

Concepts : LDAP, modle de nommage


Le modle de nommage dfinit comment sont organises les entres
de lannuaire et comment elles sont rfrences.
Les entres reprsentent des objets.
Lorganisation de ces objets se fait suivant une structure logique
hirarchique : le Directory Information Tree (DIT).
Au sein de ce DIT, lidentification dune entre se fait laide dun nom,
le Distinguish Name (DN).

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 43

Concepts : LDAP, modle de nommage


Le Directory Information Tree (DIT)
Classification des entres dans une arborescence hirarchique (comparable au systme de fichier Unix).
Exemple de modlisation dune organisation
organisation

personnes

organisation
organisation
organisation
user1

services

organisation
organisation
organisation
service1

salles runions

organisation
organisation
organisation
salle1

Chaque nud de larbre correspond une entre de lannuaire ou directory specific entry (DSE).
Au sommet de larbre se trouve lentre Suffix ou Root Entry ou BaseDN,
qui caractrise une base LDAP.
CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 44

Concepts : LDAP, modle de nommage


Le suffix dfinit lespace de nommage dont le serveur a la gestion.
Un serveur peut grer plusieurs arbres (donc plusieurs suffixes).
Il possde une entre spciale, appele root DSA Specific Entry (rootDSE) qui contient la description du DIT (V3).
Avec LDAP, vous tes libres dorganiser vos donnes comme bon vous semble
(design du DIT) (X500).
Des contraintes (performance, gestion...) impliqueront de choisir tel ou tel type de
modle (cf dploiement).

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 45

Concepts : LDAP, modle de nommage


Le Distinguished name (DN)
Rfrence de manire unique une entre du DIT ( path fichier UNIX).
Form de la suite des noms des entres, en partant de lentre et en remontant
vers le suffix, spar par des ",".
o=WorldCompany

ou=people

uid=jsmith

ou=countries

uid=sjones

ou=groups

cn=staff

Ex : le DN de lentre jsmith vaut :


uid=jsmith, ou=people, o=WorldCompany

Chaque composant du DN est appel Relative Distinguished Name


(RDN).
Le RDN est constitu dun des attributs de lentre (et de sa valeur). Le
choix de cet attribut doit assurer que 2 entres du DIT naient pas le
mme DN.
CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 46

Concepts : LDAP, modle de nommage


Alias et referral
Deux objets abstraits particuliers : les aliases et les referrals
permettent une entre de lannuaire de pointer vers une autre entre du mme
ou dun autre annuaire.
o=WorlCompany

o=acme.com

Serveur LDAP 1

Serveur LDAP 2

Lattribut aliasObjectName de lobjet alias a pour valeur le DN de lentre poin

te.
Lattribut ref de lobjet referral a pour valeur lURL LDAP de lentre dsigne.
Les referrals sont traits au niveau du serveur en LDAP V2, par le client en V3

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 47

Concepts : LDAP, modle fonctionnel


Le modle fonctionnel dcrit le moyen daccder aux donnes et les
oprations quon peut leur appliquer.
Le modle dfinit :
Les oprations dinterrogation.
Les oprations de comparaison.
Les oprations de mise jour.
Les oprations dauthentification et de contrle.
Les oprations tendus (V3)

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 48

Concepts : LDAP, modle fonctionnel


Interrogation
LDAP ne fournit pas dopration de lecture dentre.
Pour connatre le contenu dune entre, il faut crire une requte qui
pointe sur cette entre.
Une requte est compose de 8 paramtres :
Tableau 3 :

base object

lendroit de larbre o doit commencer la recherche

scope

la profondeur de la recherche

derefAliases

si on suit les liens ou pas

size limit

nombre de rponses limite

time limit

temps maxi allou pour la recherche

attrOnly

renvoie ou pas la valeur des attributs en plus de leur type

search filter

le filtre de recherche

list of attributes

la liste des attributs que lon souhaite connatre

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 49

Concepts : LDAP, modle fonctionnel


Le scope

o=WorldCompany

ou=countries

o=WorldCompany

ou=countries

o=WorldCompany

ou=countries

search base = "ou=countries,o=WorldCompany"


search scope = base

CRU-UREC

search scope = onelevel

Tutorial LDAP

search scope = subtree

Journes LDAP-27-28/9/00-Paris- 50

Concepts : LDAP, modle fonctionnel


Les filtres de recherche (RFC 2254)
(<operator>(<search operation>)(<search operation>)...))
Tableau 4 : Exemples de filtres de recherche

(cn=Norbert Durand)

galit

Nom vaut "Norbert Durand"

(cn=*Mart*)

sous-chane

Nom contient "Mart"

(cn~=martin)

approximation

Nom sonne comme "martin"

(employeenumber>=100)

comparaison

Numro suprieur 100

(sn=*)

existance

Tous les noms propres

(&(sn=Durand)(l=paris))

ET

Nom vaut "Durand" ET localisation vaut paris

(|(ou=gens)(ou=groupes))

OU

ou vaut gens ou groupes

(!(tel=*))

NON

Toutes les entres sans attribut tlphone

Ex :
(&(objectclass=inetOrgPerson)(!(mail=*)))Toutes les entres de type utilisateur
sans adresse mail

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 51

Concepts : LDAP, modle fonctionnel : comparaison


Hritage de X.500 : vrifier si lattribut dune entre contient bien une
valeur spcifie. Le serveur rpond vrai ou faux.
Equivalent une recherche qui renvoie lentre si vrai et ne renvoie
rien dans deux cas :
si lattribut ne contient pas cette valeur,
si lattribut nexiste pas
alors que la comparaison renvoie dans ce 2me cas, un code derreur.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 52

Concepts : LDAP, modle fonctionnel : mise jour


4 oprations : add, delete, rename, modify
Ces quatre oprations ncessitent les droits daccs appropris et des
prrequis :
add, rename : entre ne doit pas dj exister, entre doit avoir un parent existant
add, modify : les attributs doivent tre conformes au schma
delete : entre ne doit pas avoir denfant

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 53

Concepts : LDAP, modle fonctionnel : mise jour


rename = modifyRDN plus modifyDN(v3)
changer le RDN sans bouger de place
changer le RDN sans bouger de place, en gardant lancien RDN en attribut
dplacer lentre dans larbre en gardant le mme RDN
dplacer lentre dans larbre en changeant le RDN
o=WorlCompany
ou=people
uid=jsmith

o=WorlCompany
ou=people

ou=guests

ou=guests

uid=john

o=WorlCompany
ou=people

dn: uid=jsmith,ou=people,o=WorlCompany

uid=john

uid=jsmith

dn: uid=john,ou=people,o=WorlCompany

dn: uid=john,ou=people,o=WorlCompany

uid=john

uid=jsmith
o=WorlCompany

uid=jsmith

ou=guests

dn: uid=jsmith,ou=people,o=WorlCompany

uid=jsmith

ou=people

ou=people

ou=guests

uid=jsmith

o=WorlCompany

ou=guests

o=WorlCompany
ou=people

ou=guests

o=WorlCompany
ou=people

uid=jsmith uid=jsmith

ou=guests

o=WorlCompany
ou=people

ou=guests
uid=john

dn: uid=jsmith,ou=people,o=WorlCompany

dn: uid=jsmith,ou=people,o=WorlCompany

dn: uid=jsmith,ou=guests,o=WorlCompany

dn: uid=john,ou=guests,o=WorlCompany

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 54

Concepts : LDAP, modle fonctionnel : Authentification


Authentification et contrle
3 oprations : bind, unbind, abandon
bind = connexion.
unbind = dconnexion
abandon= le client indique au serveur quil laisse tomber la requte quil avait
envoy. Celui-ci abandonne alors le process.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 55

Concepts : LDAP, modle de scurit


Le modle de scurit dcrit le moyen de protger les donnes de
lannuaire des accs non autoriss.
La scurit se fait plusieurs niveaux :
par lauthentification pour se connecter au service,
par un modle de contrle daccs aux donnes,
par le chiffrement des transactions entre clients et serveurs ou entre serveurs.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 56

Concepts : LDAP, modle de scurit


Lauthentification
LDAP est un protocole avec connexion : louverture de session (bind)
saccompagne dune identification et, ventuellement, dun mot de passe
(optionnel en V3).
- Anonymous authentification - accs sans authentification permettant datteindre les donnes sans restrictions daccs (V2,
V3).
- Root DN authentification - accs administrateur (tous les droits)
(V2, V3).
- Mot de passe en clair - un DN plus un password qui transite en
clair sur le rseau (V2, V3).
- Kerberos V4 (V2)
- Mot de passe + SSL (LDAPS) ou TLS - la session est chiffre et
le mot de passe ne transite plus en clair.
- Certificats sur SSL - change de certificats SSL (clefs publiques/prives).
- Simple Authentification and Security Layer (SASL) - mcanisme
externe dauthentification (V3).
CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 57

Concepts : LDAP, modle de scurit


SASL
Simple Authentification and Security Layer (SASL) est dfini par le RFC
2222 et permet dajouter des mcanismes dauthentification des protocoles orients connexion (~ plug-in). SASL est implant dans LDAPv3.
Les mcanismes supports par SASL sont Kerberos, S/Key, GSSAPI entre autres.

Client LDAP

LDAP

Serveur LDAP

SASL
plug-in

CRU-UREC

SASL
plug-in

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 58

Concepts : LDAP, modle de scurit


Le contrle daccs
Le serveur attribue lutilisateur identifi, des droits daccs aux donnes
(lecture, criture, recherche et comparaison), qui lui ont t dfinis par
ladministrateur sous la forme dACLs.
Pas encore normalis par lIETF donc non compatibles entre serveurs.
Netscape Directory : sous la forme dun attribut Access Control Items
(aci)
OpenLDAP : sous la forme de directives de contrle daccs dans
slapd.conf

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 59

Concepts : LDAP, modle de scurit


Le contrle daccs (suite)
Les ACLs peuvent tre "places" au niveau des entres, au sommet de
larbre ou sur un sous-arbre.
Elles agissent sur les entres ou certains de leurs attributs.
Elles sappliquent des individus ou des groupes, mais aussi suivant
les adresses IP ou les noms de domaine des clients ou les jours et heures.
Le placement et la porte des ACLs dpendent des capacits du logiciel.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 60

Concepts : LDAP, modle de scurit


Expression gnrique des ACLs :
<quoi> <qui> <comment>

<quoi> : point dentre de lannuaire auquel sapplique la rgle


<qui> : qui sappliquent ces droits
<comment> : oprations autorises/refuses

<comment>

<qui>

Read
Write
Search
Compare
Selfwrite
Add
Delete

Tout le monde
Un utilisateur
Un groupe dutilisateur
Une machine

Exemple openldap :
access to * by self write
by * read

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 61

Concepts : LDAP, modle de scurit


Le chiffrement
LDAPv3 supporte le chiffrement des transactions (entre clients et serveurs ou entre serveurs) via lutilisation de SSL (ldaps) ou de son successeur, TLS (startTLS extended operation).
SSL ou TLS servent galement pour lauthentification par certificats :
permet au client de prouver son identit au serveur et, en retour, celui-ci den faire
de mme vis vis du client.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 62

Concepts : LDAP, modle de duplication


Le modle de duplication (replication service) dfinit comment dupliquer lannuaire sur plusieurs serveurs.
Dupliquer lannuaire peut pallier :
une panne de lun des serveurs,
une coupure du rseau,
surcharge du service.
et garantir la qualit de service : temps de rponse et sret de fonctionnement.
Permet galement :
damliorer les performances en plaant les serveurs prs des clients
de rpartir le travail entre plusieurs serveurs (load balancing)
de grer les entres localement et de les diffuser sur plusieurs sites.
Pas encore standard, mais est propos par la plupart des serveurs.
LIETF prpare le protocole LDUP.
CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 63

Concepts : LDAP, modle de duplication


La duplication met en jeu plusieurs serveurs : les supplier servers
fournissent les donnes, les consumer servers les reoivent.
Les informations de configuration dcrivant les suppliers, les consumers et quelles donnes ils changent, forment le replication agreement.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 64

Concepts : LDAP, modle de duplication


On peut dupliquer
larbre entier ou seulement un sous arbre,
une partie des entres et de leurs attributs quon aura spcifis via un filtre du genre
:
on ne duplique que les objets de type personne
on ne duplique que les attributs non confidentiels (annuaire interne
vs. annuaire externe)

Plusieurs manires de synchroniser les serveurs :


mise jour totale
mise jour incrmentale...
Plusieurs stratgies de duplications :
single-master replication
multiple-master replication
cascading replication.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 65

Concepts : LDAP, modle de duplication


La duplication se fait en temps-rel ou heure fixe (scheduling replication).
Deux prcautions :
les serveurs doivent tous utiliser le mme schma de donnes,
les rgles daccs aux donnes dupliques doivent tre dupliques.
La mise en uvre de la duplication ncessite de la prvoir au moment du
design du DIT.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 66

LDAP : APIs
Ces bibliothques de programmation permettent de crer des applications annuaire-compatibles.
Les APIs disponibles actuellement :
U-M LDAP SDK -- C (UMICH, OpenLDAP)
Innosoft LDAP Client SDK (ILC-SDK) -- C (InnoSoft)
Netscape Directory SDK -- Java, C (Netscape)
PerLDAP Modules -- Perl (Netscape)
Net- LDAPapi -- PERL (GNU)
Java Naming and Directory Interface (JUNI) -- Java (SUN)
Active Directory Service Interface (ADSI) -- COM (Microsoft)

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 67

LDAP : LDIF
LDAP Data Interchange Format (LDIF) est le standard de reprsentation des entres sous forme texte.
Utilis pour afficher ou modifier les donnes de la base suivant deux
modes :
faire des imports/exports de base,
faire des modifications sur des entres.
Le format utilis est lASCII. Toute valeur dattribut ou tout DN qui nest
pas ASCII, est cod en base 64.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 68

LDAP : LDIF
Mode import
La forme gnrale est :
dn: <distinguished name>
objectClass: <object class>
objectClass: <object class>
[...]
attribute type:<attribute value>
attribute type:<attribute value>
[...]

Un entre de type personne se prsente de la manire suivante :


dn: cn=June Rossi, ou=accounting, o=Ace Industry, c=US
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: June Rossi
sn: Rossi
givenName: June
mail: rossi@aceindustry.com
userPassword: {sha}KDIE3AL9DK
dn: cn=Walter Scott, ou=accounting, o=Ace Industry, c=US
objectClass: top
objectClass: person
objectClass: organizationalPerson

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 69

LDAP : LDIF
Mode modification
La forme gnrale est :
dn: distinguished name
changetype identifier
change operation identifier
list of attributes...
change operation identifier
list of attributes ...
Le caractre - spcifie le sparateur entre 2 instructions
Pour
Pour
Pour
Pour

crer un
dtruire
renommer
modifier

nouvel enregistrement
un enregistrement
une entre
un enregistrement

changetype:
changetype:
changetype:
changetype:

add
delete
modrdn
modify

-> Un oprateur de modification doit alors tre spcifi.


add
replace
delete

CRU-UREC

: ajouter des attributs et leurs valeurs.


: remplacer des valeurs dattributs par dautres.
: dtruire lattribut spcifi.

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 70

LDAP : LDIF
Exemple :
Ajouter le numro de tlphone et le nom du manager pour la personne Lisa Jangles.
dn: cn=Lisa Jangles, ou=Sales, o=Ace Industry, c=US
changetype: modify
add: telephonenumber
telephonenumber: (408) 555-2468
add: manager
manager: cn=Harry Cruise, ou=Manufacturing, o=Ace Industry, c=US

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 71

LDAP : LDIF
Le format utilis dans LDIF est lASCII.
Toute donne non ASCII doit tre encod en base 64. Dans ce cas le sparateur entre le type et la valeur de lattribut est :: .
jpegPhoto:: /9j/4AAQSkZJRgABAQAAAQABAAD//gBHQ1JFQVRPUjogWFYgVmVyc2lvbiAzLjEwI
CBSZXY6IDEyLzE2Lzk0ICBRdWFsaXR5ID0gNzUsIFNtb290aGluZyA9IDAK/9sAQwAIBgYHBgUIB
wcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy/

LDAP V3 utilise le jeu de caractres Unicode Transformation Format-8


(UTF-8) pour les attributs de type texte et les DNs.
UTF- 8 englobe tous les jeux de caractres (isoLatin, Shift- JLS...),
annuaires multilingues : avec loption language code de lattribut (extension propose par lIETF) ().
description;lang-fr : texte en franais
description;lang-ja : le mme en japonais
(le code suit le standard ISO 639)

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 72

Les URLs LDAP


Les URLs LDAP (RFC-1959) permettent aux clients Internet davoir
un accs direct au protocole LDAP.
syntaxe :
ldap[s]://<hostname>:<port>/<base_dn>?<attributes>?<scope>?<filter>
<base_dn>
: DN de lentre qui est le point de dpart de la recherche
<attributes> : les attributs que lon veut consulter
<scope>
: la profondeur de recherche dans le DIT partir du <base_dn>
- base : sarrte au niveau courant (par dfaut)
- one : descend dun niveau
- sub : parcourt tous les sous-niveaux
<filter>
: filtre de recherche, par dfaut (objectClass=*)
exemples :

ldap://ldap.netscape.com/ou=Sales,o=Netscape,c=US
ldap://ldap.worldcompany.com/cn=John%20Smith,ou=people,o=worldcompany
ldap://ldap.worldcompany.com/o=worldcompany?mail,uid?sub?(sn=Smith)

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 73

Dploiement
Dployer un service dannuaire LDAP, cest rflchir :
la nature des donnes que lon y met,
la manire dont on les rcupre,
lutilisation que lon compte en faire,
la faon de grer le tout.
La mise en place dun annuaire LDAP met donc en jeu plusieurs phases
de conception que lon va passer en revue.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 74

Dploiement : besoins en service dannuaire


Un annuaire LDAP = entrept dinformations facilement accessibles
aux utilisateurs ou aux applications.
Dployer un systme dannuaire se fait gnralement sous la contrainte de la mise en place ou du remplacement dune application.
Se poser la question dlargir le service dautres types dapplications
Envisager toutes les applications possibles, actuelles ou futures,
dun annuaire LDAP.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 75

Dploiement : Donnes ncessaires


Il sagit :
dinventorier, suivant les applications, la liste des donnes inclure
dans le systme dinformation et leurs caractristiques :
format
taille
nombre doccurrence
droits daccs
dynamiques ou statiques
partages ou spcifiques une application
de dterminer par quelle source les obtenir et les maintenir jour.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 76

Dploiement : Donnes ncessaires


Les sources de donnes courantes :
autre service dannuaire ou bases systmes (Unix NIS, DNS, NT domain controler...)
bases de donnes de lorganisation (base du personnel, base du PABX...)
fichiers textes ou feuilles de calcul dutilisateurs
des bases propres des applications (fichier htpasswd dApache, carnet
dadresses...)

Les mcanismes de mise jour envisageables :


synchronisation avec un SGBD
batches
saisie manuelle

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 77

Dploiement : Donnes ncessaires


Choisir, en fonction des donnes retenues, quelles classes dobjets et
types dattributs utiliser.
Les schmas standards ou fournis avec les serveurs conviennent en
gnral aux besoins.
En rgle gnrale, viter de modifier le schma existant car risque de
rendre son annuaire inutilisable par les applications clientes ou les
autres serveurs.
Prfrable de rajouter une classe dobjet et exploiter le mcanisme
dhritage dattributs des classes objets.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 78

Dploiement : Donnes ncessaires


Par exemple cration de la classe dobjet Personne fille de inetOrgPerson
dans laquelle on dfinira les attributs ncessaires ses besoins :
attributetype ( 1.3.6.1.4.1.999.1.1 NAME fonction
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
objectclass ( 1.3.6.1.4.1.999.2.1 NAME Personne SUP inetorgperson
DESC membre du personnel
MUST ( sn $ cn $ fonction )
MAY ( uidNumber $ gidNumber $ homeDirectory $ loginShell ))

Dans tous les cas :


documenter son schma pour en faciliter la maintenance et lvolution.
viter de dsactiver loption de schema checking.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 79

Dploiement : concevoir son modle de nommage


Consiste dfinir comment les entres de lannuaire vont tre organises, nommes et accdes.
Dans cette phase, les paramtres quil faut prendre en compte sont :
Le nombre dentres prvu et son volution ?
La nature (type dobjet) des entres actuelles et futures ?
Vaudra-t-il mieux centraliser les donnes ou les distribuer ?
Seront-elles administres de manire centrale ou faudra-t-il dlguer une partie
de la gestion ?
La duplication est-elle prvue ?
Quelles applications utiliseront lannuaire et imposent-elles des contraintes particulires ?
Quel attribut utiliser pour nommer les entres et comment garantir son unicit ?

En fonction de ses priorits, on privilgiera tel ou tel espace de


nommage.
CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 80

Dploiement : concevoir son modle de nommage


Design du Directory Information Tree
Le DIT X.500 est conu dans loptique dun service global : il part du pays
(top level) puis lorganisation, puis ventuellement la localisation...et il utilise lattribut cn pour nommer les entres.
Exemple de DIT la X.500
c=fr

o=cnrs

l=Grenoble

o=inria

l=Paris

cn=Claude Dupont
cn=Henri Durand

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 81

Dploiement : concevoir son modle de nommage


Design du DIT (suite)
Le modle LDAP, nimpose pas une racine universelle du DIT car il renonce tre un service dannuaire mondial.
Dans ce cadre, le DIT peut tre organis de diffrentes faons :
plat,
dcoup pour reflter lorganisation interne,
branch par type dobjet,
branch en vue de faciliter la duplication entre serveurs, la dlgation de gestion,
ou la dfinition de rgles daccs spcifiques une branche.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 82

Dploiement : concevoir son modle de nommage


Design du DIT (suite)
Exemple : arbre plat

c=us

o=WorldCompany

cn=smith
cn=jones

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 83

Dploiement : concevoir son modle de nommage


Design du DIT (suite)
Exemple : branchage par service ou par localisation

ou=R&D

CRU-UREC

c=us

c=us

o=WorldCompany

o=WorldCompany

ou=Ventes

ou=Administration

ou=Nantes

ou=Lyon

ou=Paris

cn=jones

cn=dupont

cn=smith

cn=durand

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 84

Dploiement : concevoir son modle de nommage


Design du DIT (suite)
Exemple : branchage par type dobjet

c=us

o=WorldCompany

ou=Location

CRU-UREC

ou=Groups

ou=People

Site=Paris

cn=admins

cn=dupont

Site=New York

cn=Mail admins

cn=jones

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 85

Dploiement : concevoir son modle de nommage


Design du DIT (suite)
Exemple : branchage fort
c=us
o=WorldCompany
ou=People

l=United States

ou=Sales

l=WDC

l=LA

l=France

ou=Engineering

l=NYC

ou=Engineering

ou=Sales

cn=Mike Smith

cn=Jean Dupont

cn=John Doe
CRU-UREC

ou=R&D

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 86

Dploiement : concevoir son modle de nommage


Design du DIT : branchage fort ou faible ?
Fort : les plus

Faible : les plus

Reflte lorganisation interne.


Minimise le problme de DNs identiques.
Facilite le partitionnement des donnes entre
plusieurs serveurs.

Pas de soucis de classification des entres


DN courts
stabilit du DIT
Meilleurs rapidit de recherche.

Fort : les moins

Faible : les moins

Longueur du DN.
Problme si lorganisation change.
Dure de recherche augmente.

Risque de DNs identiques.


Mal adapt au listage des entres

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 87

Dploiement : concevoir son modle de nommage


Choix du suffixe
Le suffixe = identifiant de lannuaire.
Mme si la base na quune vocation interne , elle peut terme sexternaliser.
Choisir, si possible, un suffixe unique au monde.
Dans X.500 le top level est le pays, vient ensuite le nom de lorganisation,
et ventuellement la localisation.
Ce qui donne par exemple comme suffixe : o=World Company, c=us
Aucun organisme de contrle dattribution des suffixes :
Pas de garantie de lunicit de celui-ci.
Entre temps, lInternet sest dvelopp :
NIC gre lattribution des noms de domaines DNS.
Le choix du nom de domaine DNS comme suffixe de son annuaire est recommand par lIETF IDS group.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 88

Dploiement : concevoir son modle de nommage


Choix du suffixe (suite)
Il pourra sexprimer sous deux formes :
utilisation de lattribut organization (o) :

o=world-company.com
utilisation de lattribut Domain Component (dc) dfini par le RFC 2377 :
dc=world-company, dc=com

Cette dernire forme est prconise par lIETF.


Couple avec le Service Record du DNS (SRV), permet de dterminer
automatiquement le serveur LDAP contacter, partir du DN utilis
dans une requte.
le DN uid=jones,ou=people,dc=World-Company,dc=com renvoie sur le domaine DNS
World-Company.com.
Requte sur lentre SRV du DNS de World-Company.com
_ldap._tcp.World-Company.com. IN
SRV
0 0 389 ldap.World-Company.com
Dduction : serveur : ldap.world-company.com - port : 389

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 89

Dploiement : concevoir son modle de nommage


Choix du suffixe (conclusion)
Pas de standard de design et pas de solution universelle :
faire des compromis visant prendre la moins mauvaise solution, en essayant de
dfinir les facteurs les plus contraignants.

Prendre en compte son organisation : sa structure, sa taille, son volution


Prendre en compte lusage de lannuaire :
type de donnes
leur mode de gestion
type dapplications accdant aux donnes
CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 90

Dploiement : concevoir son modle de nommage


Nommage des entres : choix du RDN
Exemples :
dn = cn=robert jones,ou=people,dc=world-company,dc=com
dn = uid=rdupont,ou=people,dc=world-company,dc=com

Problmes :
garantir lunicit
viter les changements de DN
donner une information pertinente
prise en compte des clients
Recommendations de lETF : Identification des utilisateurs par leur email
dn = uid=rdupont@world-company.com,ou=people,dc=world-company,dc=com

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 91

Dploiement : Dfinir la topologie du service


Analyser la manire dont le service dannuaire LDAP va tre rendu en
termes de performance, de fiabilit et de facilit de gestion.
Prendre en compte :
Les applications qui vont utiliser lannuaire et leur nombre dutilisateurs.
Les capacits du logiciel serveur qui va tre choisi.
La topologie de son rseau.
Le design de son espace de nommage.
Dterminer :
si la base sera centralise ou rpartie sur plusieurs serveurs.
le nombre de serveurs redondants dployer et leur emplacement sur le
rseau physique.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 92

Dploiement : Dfinir la topologie du service


Le partitionnement
Consiste clater les donnes de lannuaire sur plusieurs serveurs.
serveur A

serveur B serveur C

serveur A serveur B serveur C

Il peut tre impos par :


le volume dentres grer,
leur gestion rpartie sur plusieurs sites,
les types daccs au rseau physique,
le mode dorganisation de la socit.
Sparer les donnes ne veut pas dire forcment les dissocier : les standards LDAP et X.500 dfinissent des moyens de les relier (re-coller).
Ces moyens sont les services "referral service" et "replication service".
CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 93

Dploiement : Dfinir la topologie du service


Le referral service
La rsolution de nom est le mcanisme par lequel un serveur dtermine
quel objet de sa base dsigne le DN quun client lui fournit.
Si le DN est bien dans son contexte de nommage, il excute la requte du client
(search, modify, bind...),

sinon il renvoie un signal object not found.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 94

Dploiement : Dfinir la topologie du service


Le referral service (suite)
Les mthodes permettant de crer des liens virtuels entre des partitions
dannuaires sont appeles les knowledge references.
dc=world-company,dc=com

ou=New York

ou=LA

subordinate reference

ou=Paris

immediate superior knowledge reference


ou=Paris

contexte de nom-

ou=people ou=groups ou=printers

Les knowledge references permettent un serveur de faire suivre les requtes des utilisateurs lorsque lobjet recherch nappartient pas larbre quil gre.
CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 95

Dploiement : Dfinir la topologie du service


Le referral service (suite)
Les serveurs LDAP utilisent deux mthodes pour faire suivre les requtes le long de ces liens :
Le Referral est une information que retourne au client le serveur LDAP, lorsque

lentre recherche nappartient pas son arborescence, lui indiquant vers quel
serveur il doit re-formuler sa requte (via un URL LDAP). Le mcanisme de referral est standardis dans le protocole LDAPv3.
Le chanage (chaining) est un mcanisme o cest le serveur qui se charge de
contacter un autre serveur pour le compte du client et lui retourne la rponse. Le
chanage nest pas un standard du protocole LDAP, il est plutt utilis dans les
logiciels X.500.

Le choix entre lune ou lautre mthode dpend essentiellement des fonctionnalits du serveur choisi.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 96

Dploiement : Dfinir la topologie du service


Le referral service (suite)
les serveurs ne les positionnent pas tous au mme endroit.
Netscape Directory utilise deux types de referral :
le default referral
le smart referral.
Le default referral est indiqu au niveau de la racine du serveur et agit
comme une redirection par dfaut pour toute requte hors espace de
nommage.
Le smart referral est plac dans une entre quelconque et agit comme un
lien symbolique vers une autre entre dun autre serveur.
Les deux utilisent les URLs LDAP pour re-diriger la requte.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 97

Dploiement : Dfinir la topologie du service


Le referral service (suite)
Le default referral est positionn dans le fichier slapd.conf de Netscape Directory ou OpenLDAP sous la forme dune ligne :
referral ldap://ldap.airius.com:389/o=airius.com

Les smart referrals sont stocks dans lattribut ref de lobjet auquel on a
rajout la classe dobjet referral.
Exemple en LDIF :
dn: ou=Paris, dc=world-company, dc=com
objectclass: top
objectclass: organization
objectclass: referral
ou: Sophia
description: Filiale Paris
l: Paris
ref: ldap://ldap.paris.world-company.fr:389/ou=paris
CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 98

Dploiement : Dfinir la topologie du service


Le replication service
La duplication consiste recopier le contenu de tout ou partie de son arbre sur un autre serveur (voir LDAP-Concepts)
Son but :
rapprocher le service du rseau physique des clients (performances),
rpartir la charge sur plusieurs serveurs (load balancing),
assurer une redondance en cas de panne (disponibilit),
grer localement des entres et les diffuser dans lorganisation (partitionnement).

Le replication service est LE moyen dassurer un service dannuaire fiable, hautement disponible, et performant.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 99

Dploiement : mettre en service la duplication


Les diffrents modes de duplication.
Duplication de larbre entier sur 1 ou plusieurs consumers (source Netscape)

Le supplier (read-write) duplique sur un ou plusieurs consumers (readonly).


CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 100

Dploiement : mettre en service la duplication


Duplication de larbre entier en cascade (source Netscape)

Le supplier duplique sur un consumer qui lui-mme duplique sur un


autre.
Cas o les liaisons rseau entre sites sont de qualit variable.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 101

Dploiement : mettre en service la duplication


Duplication dune partie de larbre (source Netscape)

Le supplier coup de lextrieur ne duplique quune branche publique de


larbre sur un consumer accessible depuis linternet.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 102

Dploiement : mettre en service la duplication


Duplications croises 1 (source Netscape)

La socit Airius a deux agences NY et LA qui grent chacune leur


branche du serveur dannuaire.
La duplication est mise en uvre pour ramener les branches distantes
localement (performance) et assurer une redondance de tout larbre en
local (disponibilit).

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 103

Dploiement : mettre en service la duplication


Duplications croises 2 (source Netscape)

Les branches sont dupliques rciproquement sur chaque site.


De plus, larbre entier est dupliqu en local.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 104

Dploiement : mettre en service la duplication


Rpartir la charge en utilisant le DNS round robin
Ce mcanisme du DNS permet de configurer plusieurs adresses IP pour
un mme hostname.
Le service DNS fait une rotation de lordre des numros IP, lorsquil retourne le rsultat dune requte sur le nom du serveur LDAP.
Choisir la stratgie de duplication
Consiste dfinir le flux de mise jour des donnes entre les serveurs
de duplication.
Plusieurs mthodes existent :
Single-master replication
Floating-master replication
Multi-master replication

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 105

Dploiement : mettre en service la duplication


Single-master replication
Un serveur en lecture-criture (master) et tous les serveurs replicas sont
read-only. Les modifications des clients sont re-dirigs par des
knowledge references sur le master.
Cette solution prsente une faiblesse si le master est en panne.
master server
(read-write)

replica server
(read-only)

replica server
(read-only)

updates

modifica-

search

Client LDAP

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 106

Dploiement : mettre en service la duplication


Floating-master replication
Nouveau master en secours en cas de panne du master. Mcanisme de
synchronisation lorsque le serveur repart.
Utilis par Windows NT 4.0 pour ses contrleurs de domaines (PDC,
SDC).
Il nest pas encore adopt par les logiciels serveurs LDAP.
master server
(read-write)

replica server
(read-only)

New master server (read-write)

updates
search
modifications
Client LDAP
CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 107

Dploiement : mettre en service la duplication


Multi-master replication
Plusieurs serveurs read-write sur lesquels les clients peuvent faire les modifications.
Des mcanismes de synchronisation se chargent de grer les conflits (rgle du dernier arriv lemporte en utilisant lattribut timestamp des entres).
Ces 2 derniers modes de replication sont en cours dtude lIETF pour intgrer au
standard LDAP.
master server
(read-write)

master server
(read-write)

synchro.

modifications

modifications

Client LDAP

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 108

Dploiement : mettre en service la duplication


Duplication totale/incrmentale
La synchronisation peut tre totale ou incrmentale. Dans ce cas, le processus de synchronisation utilise un historique des mises jours.
Duplication heures fixes
Certains logiciels permettent de diffrer les mises jours certains horaires.
Utile dans le cas de liaisons rseau non permanentes ou charges par priodes.

Duplication base sur les attributs


X.500 prvoit la possibilit de filtrer les donnes dupliques par une slection dattributs.
slection dobjets via filtre sur lattribut objectclass,
slection de certains attributs (uid, password...) pour filtrer les donnes confidentielles, par ex.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 109

Dploiement : mettre en service la duplication


Schma et duplication
A partir du moment o ils partagent les mmes donnes, il est impratif que supplier
servers et consumer servers utilisent le mme schma.

Contrle daccs et duplication


Le contrle daccs se fait via des ACLs. Il est ncessaire de dupliquer ces ACLs
pour que les mmes protections sappliquent sur les donnes dupliques et originales...

...Consumers et suppliers doivent interprter de la mme manire ces ACLs (pas


normalises...) : donc utiliser le mme logiciel...
Pratiquement tous les logiciels stockent les ACLs en tant quattribut dentres de
lannuaire.
Parfois ces ACLs sappliquent aux entres infrieures (scope)...

...Vrifier que ces ACLs sont bien dans la partie dupliques du DIT ou comment
cest pris en compte par le logiciel.
CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 110

Dploiement : mettre en service la duplication


Mthodologie de mise en uvre
connatre la topologie du rseau physique.
connatre lemplacement des applications clientes et la charge gnre.
choisir la mthode de duplication en fonction des capacits du logiciel
synchronisation totale ou incrmentale
single/multi-master replication
scheduling replication ou pas
outils daudit de la duplication
positionner au mieux sur le rseau les serveurs LDAP replicas en fonction des
caractristiques du logiciel, du rseau et de lemplacement des clients.

Attention : le suffix doit toujours tre le mme entre les serveurs replicas.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 111

Dploiement : mettre en uvre le partitionnement


Rappel : le partitionnement est une solution pour les trop gros volumes
dentres (> 10000), ou des organisations clates en units autonomes.
Les mcanismes de referral peuvent tre une alternative la duplication.
Quelques prcautions :
limiter les referrals des suffixes ou des branches principales de larbre (ne pas

sen servir comme alias pour des entres),


maintenir la cohrence des liens... et vrifier la disponibilit du serveur distant,
attention au contrle daccs et lauthentification : les authentifications et les
rgles daccs du serveur initial ne sappliquent plus aux donnes du serveur
point,
attention au temps de rponse : traverse de rseaux WAN,
problme de scurit : les donnes transitent sur les rseaux WAN...

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 112

Dploiement : mettre en uvre le partitionnement


Cas dune organisation large : multi-site, multi-suffixe, multi-serveur (source Netscape)

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 113

Dploiement : mettre en uvre le partitionnement


Cas dun changement de suffix : un serveur, plusieurs suffixes (source Netscape)

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 114

Dploiement : scuriser le service


Les aspects scurit et confidentialit doivent tre pris en compte ds la
phase de conception. Quels sont les aspects tudier ?
Les accs non autoriss.
Les attaques de type denial-of-service.
Les droits daccs aux donnes.
Le gros du travail est de dterminer les rgles daccs aux donnes.
Le serveur peut tre de type read-only ou read-write. Dans les deux cas il
faut dterminer pour chaque attribut :
Quel est son niveau de confidentialit (un numro de scurit sociale est une

donne plus sensible quune adresse mail) ?


Quel utilisateur ou quelle application pourra y accder en lecture (tout le monde,
certains utilisateurs, uniquement les administrateurs...) ou en criture (utilisateur,
manager, administrateur) ?

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 115

Dploiement : scuriser le service


Les mcanismes qui peuvent tre mis en uvre sont ceux que lon retrouve dans nombre de services/serveur de lInternet :
Lauthentification
Les signatures lectroniques
Le chiffrement
Le filtrage rseau
Les rgles daccs (ACLs LDAP) aux donnes
Laudit des journaux

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 116

Dploiement : scuriser le service


Mettre en place des rgles de contrle daccs
Etape 1 : analyser pour chaque attribut son mode daccs :
Tableau 1 :

Attribut

CRU-UREC

Personne

Droit daccs

cn,sn,givenname

tous
administrateur

lecture
lecture/modification

uid

utilisateurs authentifis
administrateur

lecture
lecture/modification

telephoneNumber

tous
propritaire
administrateur

lecture
lecture/modification
lecture/modification

employeeNumber

tous
manager
administrateur

lecture
lecture/modification
lecture/modification

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 117

Dploiement : scuriser le service


Mettre en place des rgles de contrle daccs
Etape 2 : traduire ces rgles en aci (LDIF)
Exemple pour attribut telephoneNumber
rgle pour tous

aci: (target="ldap:///ou=people,dc=world-company,dc=com)
(targetattr="telephonenumber")
(version 3.0;acl "anonymous read-search access";
allow (read,search,compare) (userdnattr="manager");)
rgle pour administrateur

aci: (target="ldap:///dc=world-company,dc=com)
(targetattr="*")
(version 3.0;acl "Admin write access";
allow (write) (userdn="ldap:///cn=Directory Manager");)
rgle pour propritaire

aci: (target="ldap:///ou=people,dc=world-company,dc=com)
(targetattr="telephonenumber||roomnumber||userpassword")
(version 3.0;acl "self write access";
allow (write) (userdn="ldap:///self");)

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 118

Dploiement : scuriser le service


Mettre en place des rgles de contrle daccs
Etape 2 : traduire ces rgles en aci (suite)
Exemple pour attribut employeeNumber
rgle pour manager
aci: (target="ldap:///ou=people,dc=world-company,dc=com)
(targetattr="employeenumber")
(version 3.0;acl "manager write access";
allow (read,write) (userdnattr="manager");)

avec lattribut manager indiquant le DN du manager de lentre


dn: cn=John Smith,ou=people,dc=world-company,dc=com
objectclass: top
objectclass: person
cn: John Smith
manager: cn=Bill Baxter, ou=people,dc=world-company,dc=com
...

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 119

Dploiement : scuriser le service


Mettre en place des rgles de contrle daccs
Etape 2 : traduire ces rgles en aci (suite)
Exemple dutilisation dun filtre (targetfilter) permettant aux membres du groupe
Servadm Manager de modifier une partie des attributs des personnes membres du
service administratif.

rgle pour membre du groupe Servadm Manager


aci: (target="ldap:///dc=world-company,dc=com)
(targetattr != "uid||mail")
(targetfilter="(&(ou=servadm)(objectclass=person))")
(version 3.0;acl "Servadm group permissions";
allow (write)
(groupdn="ldap:///cn=servadm manager,ou=groups,dc=world-company,dc=com");)

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 120

Dploiement : scuriser le service


Mettre en place des rgles de contrle daccs
Le placement des ACLs influe sur leur porte.

ACLs sappliquant
tout larbre

dc=world-company,dc=com

ou=people

ou=groups
ACLs sappliquant au
sous-arbre groups

uid=jones

cn=smith

ACLs sappliquant
lentre jones

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 121

Dploiement : gestion des donnes


Etablir une mthode de gestion des donnes, selon la nature des attributs, pour dterminer qui administre quels attributs et dans quelle partie
du DIT.
On distingues plusieurs catgories de gestion :
attributs maintenus par ladministrateur de lannuaire (contrle daccs...)
attributs maintenus par les fournisseurs de donnes (service du personnel...)
attributs maintenus par lutilisateur final (photo, tlphone...)
attributs maintenus par les applications (prfrences...)
attributs maintenus par le service dannuaire lui-mme
Pour chacune, il faut dfinir la mthode et la frquence de mise jour,
valuer la qualit des donnes et valuer lincidence sur les performances du serveur.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 122

Dploiement : gestion des donnes


A terme, les attributs maintenus par les applications deviendront majoritaires.
Ces applications doivent respecter certaines rgles pour optimiser les
performances du serveur :
minimiser les connexions en groupant les oprations
optimiser le nombre dopration : rechercher plusieurs attributs dun coup, ne

rcuprer que les attributs ncessaires, faire des recherches efficaces


minimiser les mises jours

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 123

Dploiement : gestion des donnes


Les attributs maintenus de manire centralises font lobjet des choix suivants :
mise jour par commande ou par import de fichier
protger les transactions de mises jours de donnes sensibles
qui fait les mises jour (personnes, scripts...)
quelle frquence
vrifier les donnes en amont

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 124

Dploiement : gestion des donnes


Les attributs maintenus par lutilisateur prsentent les caractristiques
suivantes :
source dinformation, do des donnes plus jour (bureau, tlphone...)
implication des utilisateurs
risque de saisies errones ou invalides
disposer dune interface spcifique de mise jour
attention la frquence globale de mise jour et son impact sur les performances

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 125

Logiciels serveurs
Concepts
Dployer un service LDAP
Les logiciels serveurs
Les clients LDAP
Les outils de dveloppement
Les applications de LDAP aujourdhui et demain
Bibliographie

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 126

Logiciels serveurs
A cette date, les logiciels les plus connus sont :
OpenLDAP server,
Innosofts Distributed Directory Server,
Netscape Directory Server,
Sun Microsystemss Directory Services,
IBMs DSSeries LDAP Directory,
University of Michigans SLAPD.

Dautres annuaires supportent les requtes au format LDAP :


Novells NetWare Directory Services (NDS) 3.0,
Microsofts Active Directory (AD),
Lotus Domino.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 127

Logiciels serveurs
Choisir un logiciel serveur : quelques critres de choix
le prix dachat
les cot de maintenance et de support
ladquation du logiciel avec le type dapplications envisages :
dtermine limportance accorder aux critres dvaluations (performances, nombre dentres supports, niveau de scurisation...)
la facilit de prise en main
ladquation entre son choix de design et les fonctionnalits du logiciel (schma, replication, referral...)
la compatibilit avec le logiciel antrieur (rutilisabilit)

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 128

Logiciels serveurs
Choisir un logiciel serveur : quelques critres dvaluation
les fonctionnalits de base

les plates-formes hardware/software supportes


le schma et ses extensions
les oprations LDAP standards et tendues
les possibilits de duplication
le support de la distribution (referral, chaining)
outils dimport-export, de backup
les outils de gestion
procdure dinstallation
outils de configuration et dadministration (interface web, commandes en ligne
pour automatisation...)
interfaces de gestion de la base (clients natifs, web, commandes en ligne...)
possibilit dadministrer distance

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 129

Logiciels serveurs
Choisir un logiciel serveur : quelques critres dvaluation (suite)
Les outils de dveloppement

API
SDK
logiciels clients
la fiabilit
sauvegardes et modifications de configuration chaud
mcanismes de replication multi-master
outils de monitoring
qualit de la base de donnes utilise en cas darrt intempestif

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 130

Logiciels serveurs
Choisir un logiciel serveur : quelques critres dvaluation (suite)
performance et volutivit
temps de latence
nombre doprations par seconde
nombre de connexions simultanes
nombre dentres, dattributs et taille supports
nombre de replicas et de partitions supports
benchmark DirectoryMark (http://www.mindcraft.com/benchmarks/dirmark)

scurit
mthodes de contrle daccs
gestion des droits daccs
mthodes dauthentification
chiffrement des transactions, de la duplication

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 131

Logiciels serveurs
Choisir un logiciel serveur : quelques critres dvaluation (suite)
conformit aux standards
LDAPv2 core : RFC1777-1779
LDAPv3 core : RFC2251-2256
LDAPv3 extension
LDIF
API
SSL/TLS, certificats X509
schmas standards
standards X.500
interoprabilit

Le respect des standards est une premire garantie dinteroprabilit

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 132

Logiciels serveurs
Choisir un logiciel serveur : valuation
comparer les fonctionnalits
tester les softs sur une base pilote
faire quelques benchmarks

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 133

Logiciels clients
Concepts
Dployer un service LDAP
Les logiciels serveurs
Les clients LDAP
Les outils de dveloppement
Les applications de LDAP aujourdhui et demain
Bibliographie

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 134

Clients LDAP
Accs natif :
Netscape Communicator
Microsoft Outlook, NetMeeting
Netscape SuiteSpot (les serveurs mail, news, web...)
Oblix (gestionnaire dannuaire)
Navigateur Web : URLs LDAP
U-Mich xaX.500
GQ (GTK-based LDAP client)
LDAP Browser/Editor (Java-based LDAP client)
Applications dveloppes avec un SDK LDAP

Accs via passerelle :


LDAP vers X.500 et X.500 vers LDAP
HTTP vers LDAP (web500gw)
WHOIS++ vers LDAP
FINGER vers LDAP
PH/CSO vers LDAP

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 135

Clients LDAP
Appels systmes LDAP
Microsoft Windows NT
NT 5 utilise une base LDAP la place des bases SAM
PADL software :
ypldapd : a gateway between NIS/YP and LDAP
NSS LDAP : Nameservice switch library module
PAM LDAP : Pluggable authentication module
Sun Solaris
NSS : Nameservice switch library module
Linux
Linux Directory Services : projet de remplacement de NIS par LDAP

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 136

Les outils de dveloppement


Concepts
Dployer un service LDAP
Les logiciels serveurs
Les clients LDAP
Les outils de dveloppement
Netscape C SDK
Netscape PerLDAP SDK
Netscape JAVA SDK
SUN JNDI
ADSI SDK
Netscape Directory Server Plug-Ins
Les autres...
Les applications de LDAP aujourdhui et demain
Bibliographie

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 137

Les outils de dveloppement : Netscape C SDK


Connexion/Dconnexion
#include <stdio.h>
#include "ldap.h"
#define HOST "ldap.worldcompany.com"
#define PORT "389"
LDAP *ld;
int rc;

/* LDAP Data Structure */

if ( (ld = ldap_init("ldap.worldcompany.com",389)) == NULL) {


rc = ldap_get_lderrno(ld,NULL,NULL);
fprintf(stderr, "erreur %s\n",ldap_err2string(rc);
return(rc);
}
[...]
if ( ldap_unbind(ld) != LDAP_SUCCESS) {
rc = ldap_get_lderrno(ld,NULL,NULL);
fprintf(stderr, "erreur %s\n",ldap_err2string(rc);
return(rc);
}

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 138

Les outils de dveloppement : Netscape C SDK


Bind/Unbind
[...]
#define DN NULL/* anonymous dn */
#define PW NULL/* anonymous dn */
[...connexion...]
if ( (rc = ldap_simple_bind_s(ld,DN,PW)) != LDAP_SUCCESS ) {
fprintf(stderr, "erreur %s\n",ldap_err2string(rc);
}
else {
printf("authentification russie\n");
}
[...]
ldap_unbind(ld) ;

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 139

Les outils de dveloppement : Netscape C SDK


Search
[...]
#define SEARCHBASE "ou=people,o=WorldCompany"
#define SCOPE LDAP_SCOPE_SUBTREE
#define FILTER "(uid=jsmith)"
LDAPMessage *result, *e;
BerElement *ber;
char *attribute, **vals;
[...connexion...]
/* recherche */
rc = ldap_search_ext_s(ld, SEARCHBASE, SCOPE, FILTER, NULL, 0, NULL,
NULL, LDAP_NO_LIMIT, 0, &result);
/* affichage */
for (e = ldap_first_entry(ld, result); e != NULL; e = ldap_next_entry(ld,e)) {
printf("dn: %s\n", ldap_get_dn(ld, e));
for (attribute = ldap_first_attribute(ld, e, &ber);
attribute != NULL ; attribute = ldap_next_attribute(ld, e, ber)) {
if ( (vals = ldap_get_values(ld, e, attribute) != NULL ) {
for (i = 0; vals[i] != NULL; i++) {
printf("%s: %s\n",attribute, vals[i]);
}
}
}
}
CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 140

Les outils de dveloppement : Netscape C SDK


Add entry
[...]
#define DN "cn=john smith,ou=people,o=WorldCompany"
LDAPMod attribut1, attribut2, attribut3, mods[];
char objectclass_values[] = {"top", "person", "organizationalperson", NULL};
char cn_values[] = {"John Smith", NULL};
char ou_values[] = {"people", NULL};
[...connexion...]
/* cration de lentre */
attribut1.mod_op = LDAP_MOD_ADD;
attribut1.mode_type = "cn";
attribut1.mode_value = cn_values;
attribut2.mod_op = LDAP_MOD_ADD;
attribut2.mode_type = "ou";
attribut2.mode_value = ou_values;
...
mods[0] = &attribute1 ;
mods[1] = &attribute2 ;
/* ajout de lentre */
rc = ldap_add_ext_s(ld, DN, mods, NULL, NULL);
[...deconnexion...]
CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 141

Les outils de dveloppement : Netscape C SDK


Delete entry
[...]
#define DN "cn=john smith,ou=people,o=WorldCompany"
[...connexion...]
[...authentification...]
/* destruction de lentre */
rc = ldap_delete_ext_s(ld, DN, NULL, NULL);
[...deconnexion...]

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 142

Les outils de dveloppement : Netscape PerLDAP SDK


Connexion/Dconnexion/Bind
use Mozilla::LDAP::Conn;
use Mozilla::LDAP::Utils;
my $ldap = "ldap.worldcompany.com";
my $port = "389";
my $base = "o=worldcompany";
# cas 1 : authentification anonyme
my $bind = "NULL";
my $passwd = "NULL";
# cas 2 : authentification utilisateur
my $bind = "uid=jsmith,ou=people,o=WorldCompany";
my $passwd = "toto";
# cas 3 : authentification administrateur
my $bind = "cn=Directroy Manager";
my $passwd = "le_chef";
# connexion et authentification
my $conn = new Mozilla::LDAP::Conn("$ldap","$port","$bind","$passwd","$cert");
die "Couldt connect to LDAP server $ld{host}" unless $conn;
[...]
# dconnexion
$conn->close if $conn;
CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 143

Les outils de dveloppement : Netscape PerLDAP SDK


Search
use Mozilla::LDAP::Conn;
use Mozilla::LDAP::Entry;
my $base = "ou=people,o=WorldCompany";
my $scope = "subtree";
my $filter = "(&(objectclass=person)(ou=semir))" ;
[...connexion...]
# search
my $entry = $conn->search($base, $scope, $filter);
$conn->printError() if $conn->getErrorCode();
# affichage du rsultat
if (! $entry ) {
print "Recherche infructueuse.\n";
}
else {
while ($entry) {
$entry->printLDIF();
$entry = $conn->nextEntry;
}
}

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 144

Les outils de dveloppement : Netscape PerLDAP SDK


Add entry
[...]
# DN de lentre
my $dn = "cn=john smith,ou=people,o=WorldCompany";
[...connexion...]
# construction de lentre
my $newentry = new Mozilla::LDAP::Entry();
$newentry->setDN($dn);
$newentry->{objectclass} = [ "top", "person", "organizationalPerson" ];
$newentry->{manager} = [ "uid=jsmith,ou=people,o=WorldCompany" ];
$newentry->{cn} = [ "John Smith" ];
$newentry->{description} = [ "indescriptible !" ];
$newentry->{ou} = [ "people" ];
$newentry->addValue("o", "french part of company");
$newentry->addValue("seeAlso", "http://www.worldcompany.com/~jsmith");
# ajout de lentre
$conn->add($newentry);
if ($conn->getErrorCode()) {
print $conn->printError();
}

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 145

Les outils de dveloppement : Netscape PerLDAP SDK


Delete entry
use Mozilla::LDAP::Conn;
use Mozilla::LDAP::Utils;
use Mozilla::LDAP::Entry;
# DN de lentre
my $dn = "cn=john smith,ou=people,o=WorldCompany";
[...connexion...]
# destruction de lentre
$conn->delete($dn);
if ($conn->getErrorCode()) {
print $conn->printError();
}
else {
print "Utilisateur supprim.\n";
}

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 146

Les outils de dveloppement : Netscape Java SDK


Connexion/Dconnexion/Bind
import netscape.ldap.*;
import java.io.*;
import java.util.*;
[...]
LDAPConnection ldap = new LDAPConnection();
/* connexion */
ldap.connect("ldap.worldcompany.com",389);
/* authentification anonyme */
ldap.authenticate("","");
/* authentification utilisateur */
ldap.authenticate("uid=jsmith,ou=people,o=WorldCompany","toto");
/* connexion et authentification en un coup */
ldap.connect("ldap.worldcompany.com",389,"uid=jsmith,ou=people,o=WorldCompany","toto");
/* dconnexion */
ldap.disconnect();
CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 147

Les outils de dveloppement : Netscape Java SDK


Search
[...connexion...]
String base = "o=worldcompany";
int scope = LDAPConnection.SCOPE_SUB;
String filter = "(objectclass=person)";
[...]
/* search */
LDAPSearchResults res = ldap.seach(base,scope,filter,null,false);
/* affichage */
while (res.hasMoreElements()) {
LDAPEntry findEntry = (LDAPEntry) res.next();
System.out.println("dn: " + findEntry.getDN());
LDAPAttributeSet attributeSet = findEntry.getAttributeSet();
for (int i=0;i<attributeSet.size();i++) {
LDAPAttribute attribute = (LDAPAttribute)attributSet.elementAt(i);
String attrName = attribute.getName();
System.out,println(attrName + " :");
Enumeration enumVals = attribute.getStringValues();
while (enumVals.hasMoreElements()) {
String nextValue = (String)enumVals.nextElement();
System.out,println(nextValue);
}
}
}
CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 148

Les outils de dveloppement : Netscape Java SDK


Add entry
[...connexion...]
String dn = "cn=john smith,ou=people,o=WorldCompany";
String objectclass_values[] = {"top", "person", "organizationalperson"};
String cn_values[] = {"John Smith"};
String ou_values[] = {"people"};
[...]
LDAPAttributeSet attrib_set = new LDAPAttributeSet();
LDAPAttribute attribute = null;
attribute = new LDAPAttribute("objectclass", objectclass_values);
attrib_set.add(attribute);attribute = new LDAPAttribute("cn", cn_values);
attrib_set.add(attribute);attribute = new LDAPAttribute("ou", ou_values);
attrib_set.add(attribute);
/* cration de lobjet */
LDAPEntry entry = new LDAPEntry(dn,attrib_set);
/* ajout de lentre */
ld.add(entry);
[...]

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 149

Les outils de dveloppement : Netscape Java SDK


Delete entry
[...connexion...]
String dn = "cn=john smith,ou=people,o=WorldCompany";
[...]
/* destruction de lentre */
ldap.delete(dn);
[...]

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 150

Les outils de dveloppement : les autres


U-M LDAP SDK -- C (UMICH, OpenLDAP)
le premier SDK
Innosoft LDAP Client SDK (ILC-SDK) -- C (InnoSoft)
proche du prcdent

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 151

Les outils de dveloppement : les autres


LDAP Command Line Tools -- packages LDAP
(U-M, OpenLDAP, Netscape)
ldapsearch
ldapsearch -h ldap.worldcompany.com -b "o=worldcompany" -s sub "&((objectclass=person)(ou=semir))" cn,uid,mail,telephonenumber

ldapmodify
ldapmodify -h ldap.worldcompany.com -b "o=worldcompany" -D "cn=Directory Manager"
-w "toto"
dn: uid=jsmith, ou=people, o=worldcompany
changetype: modify
replace: roomnumber
roomnumber: C105
add: description
description: newsmaster
delete: title
\n\n

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 152

Les outils de dveloppement : les autres


Java naming and Directory Interface (JNDI) -- Java (SUN)
conu comme interface diffrents protocoles de type annuaire (LDAP,
Sun NIS/NIS+, Novell NDS...).

Active Directory Service Interfaces - COM (Microsoft)


concept similaire JNDI.
Net- LDAPapi -- PERL (GNU)
comme PerLDAP mais entirement en Perl.
LDAP API to Python -- Python (University of Queensland)
langage orient dveloppement dinterface graphique.
LDAP API to PHP (http://www.php.net)
langage de script orient Web - server-side dynamic HTML.
DSML -- Directory Service Markup Language (http://www.dsml.org/)
standard pour reprsenter des informations issues de service dannuaire en XML.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 153

Les outils de dveloppement : les autres


PS Enlist - ODBC interface to LDAP (http://www.pspl.co.in/PSEnList)
accs LDAP via ODBC (i.e. accder LDAP depuis MS Office !).
Server-Side Javascript LDAP SDK -- JavaScript (Netscape)
module orient Web - dynamic HTML pour les serveurs Web Netscape SuiteSpot.
ColdFusion (Allaire)
Langage/outil de dveloppement orient Web - database, sinterfaant avec LDAP.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 154

Les applications de LDAP


Concepts
Dployer un service LDAP
Les logiciels serveurs
Les clients LDAP
Les outils de dveloppement
Les applications de LDAP aujourdhui et demain
Bibliographie

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 155

Les applications de LDAP


Les diffrents domaines dapplication possibles des annuaires LDAP :
Les applications systme
Les applications Intranet/Extranet
Les applications Internet
Les bases de donnes

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 156

Les applications de LDAP : applications systmes


Les applications systmes
Lannuaire utilis pour servir aux besoins des services rseaux tels que
lauthentification, le contrle daccs, la localisation des imprimantes ou
des serveurs de fichier.
Dans ce cas, il est troitement li au systme dexploitation.
De plus en plus de fabricants se tournent vers le standard LDAP pour
limplanter dans leur systme.
Exemple : Windows 2000, Novell, Solaris, Linux...

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 157

Les applications de LDAP : applications intranet


Les applications Intranet
Le service dannuaire sert typiquement aux applications utiles lutilisateur final :
accs des pages Web,
annuaire tlphonique ou pour la messagerie lectronique,
profils de configuration... (Netscape suitespot, Lotus Domino...)

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 158

Les applications de LDAP : applications extranet


Les applications Extranet
Lannuaire peut servir de base dinformation entre un fournisseur et ses
sous-traitant, une banque et ses clients...
Ce sont celles mises en uvre par les ISPs ou les grandes entits industrielles ou universitaires.
Lannuaire sert grer les abonnes, les hbergements de services
comme le Web et la messagerie.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 159

Les applications de LDAP : bases de donnes


Les bases de donnes
Lannuaire peut remplacer un SGBD traditionnel dans le cas de donnes
simples, intensivement interroges, distribues large chelle et utilises par des multiples applications (fichier clientle, catalogues de fournitures...).
Il peut pauler un SGBD, en tant synchronis avec lui, pour faciliter la
consultation des donnes ou la mise jour de certains champs.
Parfois, lorganisation possde plusieurs bases de donnes dconnectes et grant des informations redondantes :
la paye
le bureau du personnel
les comptes informatiques
les badges daccs
les cartes de restaurants...

Un annuaire LDAP peut fdrer les donnes communes (informations


sur les employs), les donnes sensibles tant gres dans les SGBD
=> Meta-Directory.
CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 160

Les applications de LDAP : exemples


Gestion centralise de lauthentification et des droits daccs
Remplacer les multiples mots de passe applicatifs/systmes par une authentification
LDAP centralise.

Netscape Directory Server - synchronisation des bases utilisateurs Windows NT4 avec base LDAP
Netscape SuiteSpot - serveur de Mail, de News, Web utilisant LDAP pour
lauthentification
Cyrus IMAP/POP3 pwcheck_ldap.c - programme externe dauthentification LDAP pour les serveurs IMAP/POP3 de Cyrus.
Apache::AuthLDAP - module dauthentification et de gestion des autorisations daccs au serveur Web Apache via LDAP.
PADL Softwares PAM (Pluggable Authentification Module) & NSS (Name
Service Switch) Modules - authentification/lookup redirigs sur LDAP
sous Solaris et Linux

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 161

Les applications de LDAP : exemples


Gestion des mailing-lists et des aliases mail par LDAP
Netscape Messenger Server - Serveur de Mail full LDAP .
Sendmail 8.9.x : peut utiliser LDAP pour les rsolutions dadresses.
Sympa : gestionnaire de listes de diffusions LDAP capable

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 162

Les applications de LDAP : exemples


Mobilit utilisateur : accs distant des applications aux options, configurations et prfrences
permettre lutilisateur de retrouver son environnement applicatif indpendamment de sa localisation

Netscape Communicator Roaming Access.


Netscape Calendar nscalUser object class.

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 163

Les applications de LDAP : exemples


Annuaires...
Annuaire du personnel
Inventaire du matriel
Stockage des certificats (X509) et des listes de rvocation (CLRs) - pour
des infrastructures base de clefs publiques -

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 164

Les applications de LDAP : exemples


Directory Enabled Networks Initiative (DEN)
Consortium pour dfinir un modle dinformation standard facilitant le dveloppe

ment dapplications reseaux Directory-Enabled interoprables.


Faciliter laccs des utilisateurs aux services rseaux : authentification, droits
daccs...

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 165

Futur
apparition des mta-annuaires
intgration des annuaires dans les OS
tendance utiliser LDAP comme un protocol lger daccs des bases de donnes
prdominance de LDAP
des annuaires partout !

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 166

Bibliographie
Linuxworld LDAP in action:
http://linuxworld.com/linuxworld/lw-1999-07/lw-07-ldap_1.html

Linux LDAP services:


http://www.rage.net/ldap/

OPenLDAP.org:
http://www.openldap.org

Netscape Deployment Guide:


http://developer.netscape.com/docs/manuals/directory/deploy30/index.htm

LDAP FAQ:
http://www.critical-angle.com/ldapworld/ldapfaq.html

LDAP roadmap and FAQ:


http://www.kingsmountain.com/ldapRoadmap.shtml

LDAP Central
http://www.ldapcentral.com/

Understanding and deploying LDAP directory services, T. Howes, M. C. Smith, G.


Good; Macmillan

CRU-UREC

Tutorial LDAP

Journes LDAP-27-28/9/00-Paris- 167

Vous aimerez peut-être aussi