XLVIII. LDAP

Introduction

LDAP siginifie : Lightweight Directory Access Protocol ( Protocole léger d'accès aux annuaires ) . C' est un protocole utilisé pour accéder aux "serveurs de dossiers " . Ces serveurs sont des bases de données particulières , qui stockent les informations sous forme d ' arborescence .

Le concept d' arborescence est similaire à celui de la structure de votre système de fichier , hormis le fait que dans ce contexte , la racine s'appelle "le monde" , et que le premier niveau de sous-dossier s'appelle "pays " . Les niveaux encore en dessous sont des " compagnies " "organisation " ou "places" , et encore plus bas , vous trouverez des "personnes " et même , des "équipements " et "documents " .

Pour identifier un fichier dans votre disque , vous utilisez un chemin tel que


/usr / local / mon_application / documents

Le slash indique une division dans la référence , et la séquence est lue de gauche à droite .

l' équivalent d'une référence globale en LDAP s'appelle un "nom distingué " ("distinguished name") , aussi appelé "dn " . Un exemple de dn serait :


cn=Jean Dupond,ou=Comptabilité,o=Ma Compagnie,c=FR

La virgule marque la séparation de chaque division comme référence , et la séquence est lue de droite à gauche . Il faut donc lire :


country = FR organization = Ma Compagnie organizationalUnit = Comptabilité commonName = Jean Dupond



De la même façon qu' il n 'y a pas de règle obligatoire sur comment organiser les fichiers sur un disque dur , un responsable de serveur de dossiers peut organiser le serveur comme cela lui semble le plus pratique . Cependant , il y a des conventions à utiliser . Le principe est que vous ne pouvez pas écrire accéder à un serveur de dossier à moins que vous ne connaissiez sa structure , de même que vous ne pouvez une base de données sans en connaître les tables et les bases .

Bien plus d' informations sont disponibles aux URL suivantes (en anglais ) :

Le SDK Netscape contient un guide du programmeur très utile , au format HTML ( et en anglais ) .

Pré-requis

Vous devez télécharger et compiler les librairies clients LDAP , soit celles de University of Michigan ldap-3.3 , soit le Netscape Directory SDK 3.0 .

Installation

Le support LDAP de PHP n ' est pas activé par défaut . Vous devez utiliser l ' option de configuration --with-ldap lorsque vous compilez PHP .

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini .

Tableau 1 .

For further details and definition of the PHP_INI_* constants see ini_set() .

Types de ressources

Cette extension ne définit aucune ressource .

Constantes Prédefinies

Ces constantes sont définies par cette extension , et ne sont disponibles que si cette extension a été compilée avec PHP , ou bien chargée au moment de l ' exécution .

LDAP_DEREF_NEVER ( integer )

LDAP_DEREF_SEARCHING ( integer )

LDAP_DEREF_FINDING ( integer )

LDAP_DEREF_ALWAYS ( integer )

LDAP_OPT_DEREF ( integer )

LDAP_OPT_SIZELIMIT ( integer )

LDAP_OPT_TIMELIMIT ( integer )

LDAP_OPT_PROTOCOL_VERSION ( integer )

LDAP_OPT_ERROR_NUMBER ( integer )

LDAP_OPT_REFERRALS ( integer )

LDAP_OPT_RESTART ( integer )

LDAP_OPT_HOST_NAME ( integer )

LDAP_OPT_ERROR_STRING ( integer )

LDAP_OPT_MATCHED_DN ( integer )

LDAP_OPT_SERVER_CONTROLS ( integer )

LDAP_OPT_CLIENT_CONTROLS ( integer )

LDAP_OPT_DEBUG_LEVEL ( integer )

GSLC_SSL_NO_AUTH ( integer )

GSLC_SSL_ONEWAY_AUTH ( integer )

GSLC_SSL_TWOWAY_AUTH ( integer )

Exemple complet de code LDAP

Lit les informations sur toutes les entrées dont le nom commence par " S " sur le serveur de dossier , puis affiche le nom et l 'adresse email .

Exemple 1 . Recherche avec LDAP

 
?php

 
/

 
/

 
La

 
s

 
eacute;

 
quence

 
de

 
base

 
avec

 
LDAP

 
est

 
/

 
/

 
connexion

 
,

 
liaison

 
,

 
recherche

 
,

 
interpr

 
eacute;tation

 
du

 
r

 
eacute;sultat

 
/

 
/

 
d

 
eacute;connexion

 
echo

 
"

 
h3

 
requ

 
ecirc;te

 
de

 
test

 
de

 
LDAP

 
/

 
h3

 
"

 
;

 
echo

 
"Connexion

 
..

 
."

 
;

 
$ds=ldap_connect("localhost")

 
;

 
/

 
/

 
doit

 
ecirc;tre

 
un

 
serveur

 
LDAP

 
valide

 
!

 
echo

 
"Le

 
r

 
eacute;sultat

 
de

 
connexion

 
est

 
".$ds

 
.

 
"

 
p

 
"

 
;

 
if

 
($ds

 
)

 
{

 
echo

 
"Liaison

 
..

 
."

 
;

 
$r=ldap_bind($ds)

 
;

 
/

 
/

 
this

 
is

 
an

 
"anonymous

 
"

 
bind

 
,

 
typically

 
/

 
/

 
read-only

 
access

 
echo

 
"Le

 
r

 
eacute;sultat

 
de

 
connexion

 
est

 
".$r

 
.

 
"

 
p

 
"

 
;

 
echo

 
"Recherchons

 
(sn=S*

 
)

 
..

 
."

 
;

 
/

 
/

 
Recherche

 
par

 
nom

 
$sr=ldap_search($ds

 
,"o=My

 
Company

 
,

 
c=US"

 
,

 
"sn=S*")

 
;

 
echo

 
"Le

 
r

 
eacute;sultat

 
de

 
la

 
recherche

 
est

 
".$sr

 
.

 
"

 
p

 
"

 
;

 
echo

 
"Le

 
nombre

 
d'entr

 
eacute;es

 
retourn

 
eacute;es

 
est

 
".ldap_count_entries($ds,$sr)

 
.

 
"

 
p

 
"

 
;

 
echo

 
"Lecture

 
des

 
entr

 
eacute;es

 
..

 
.

 
p

 
"

 
;

 
$info

 
=

 
ldap_get_entries($ds

 
,

 
$sr)

 
;

 
echo

 
"Donn

 
eacute;es

 
pour

 
".$info["count"]

 
.

 
"

 
entr

 
eacute;es

 
:

 
p

 
"

 
;

 
for

 
($i=0

 
;

 
$i

 
$info["count"]

 
;

 
$i++

 
)

 
{

 
echo

 
"dn

 
est

 
:

 
"

 
.

 
$info[$i]["dn"

 
]

 
.

 
"

 
br

 
"

 
;

 
echo

 
"premiere

 
entree

 
cn

 
:

 
"

 
.

 
$info[$i]["cn"][0

 
]

 
.

 
"

 
br

 
"

 
;

 
echo

 
"premier

 
email

 
:

 
"

 
.

 
$info[$i]["mail"][0

 
]

 
.

 
"

 
p

 
"

 
;

 
    }

 
echo

 
"Fermeture

 
de

 
la

 
connexion"

 
;

 
ldap_close($ds)

 
;

 
}

 
else

 
{

 
echo

 
"

 
h4

 
Impossible

 
de

 
se

 
connecter

 
au

 
serveur

 
LDAP

 
.

 
/

 
h4

 
"

 
;

 
}

 
?



Utiliser les fonctions LDAP de PHP

Avant d ' utiliser les fonctions LDAP , vous devez connaître

  • Le nom ou l ' adresse du serveur de dossiers que vous voudrez utiliser

  • Le " base dn " du serveur (la partie du dossier monde qui est disponible sur ce serveur , ce qui peut être "o=Ma Compagnie,c=FR" )

  • Le mot de passe éventuel d' accès au serveur (de nombreux serveurs fournissent un accès anonyme en lecture , mais requièrent des mots de passe pour tout le reste .



La séquence LDAP typique que vous exécuterez sera la suivante :


ldap_connect( ) / / établit une connexion au serveur | ldap_bind( ) / / connexion anonyme ou identifiée | réalisation de commadnes comme des recherches ou des modifications , puis affichage du résultat . | ldap_close( ) / / déconnexion









Table des matières
ldap_8859_to_t61 -- Convertit les caractères 8859 en caractères t61
ldap_add -- Ajoute une entrée dans un dossier LDAP
ldap_bind -- Bind to LDAP directory
ldap_close -- Ferme une connexion au serveur LDAP
ldap_compare -- Compare une entrée avec des valeurs d'attributs
ldap_connect -- Se connecte à un serveur LDAP
ldap_count_entries -- Compte le nombre d'entrées après une recherche
ldap_delete -- Efface une entrée dans un dossier
ldap_dn2ufn -- Convert it un DN en format UFN (User Friendly Naming)
ldap_err2str -- Convertit un numéro d'erreur LDAP en message d'erreur
ldap_errno -- Retourne le numéro d'erreur LDAP de la dernière commande exécutée.
ldap_error -- Retourne le message LDAP de la dernière commande LDAP.
ldap_explode_dn -- Sépare les différents composants d'un DN
ldap_first_attribute -- Return first attribute
ldap_first_entry -- Retourne la première entrée
ldap_first_reference -- Return first reference
ldap_free_result -- Free result memory
ldap_get_attributes -- Lit les attributs d'une entrée
ldap_get_dn -- Lit le DN d'une entrée
ldap_get_entries -- Lit toutes les entrées du résultat
ldap_get_option -- Lit/écrit la valeur courante d'une option
ldap_get_values_len -- Lit toutes les valeurs binaires d'une entrée
ldap_get_values -- Lit toutes les valeurs d'une entrée
ldap_list -- Recherche dans un niveau
ldap_mod_add -- Ajoute un attribut à l'entrée courante
ldap_mod_del -- Efface un attribut à l'entrée courante
ldap_mod_replace -- Remplace un attribut dans l'entrée courante
ldap_modify -- Modifie une entrée LDAP
ldap_next_attribute -- Lit l'attribut suivant
ldap_next_entry -- Lit la prochaine entrée
ldap_next_reference -- Lit la référence suivante
ldap_parse_reference -- Extrait les informations d'une référence d'entrée
ldap_parse_result -- Extrait des informations d'un résultat
ldap_read -- Lit une entrée
ldap_rename -- Modifie le nom d'une entrée
ldap_search -- Recherche sur le serveur LDAP
ldap_set_option -- Modifie la valeur d'une option LDAP
ldap_set_rebind_proc -- Configure une fonction de callback pour refaire des liaisons, lors de recherche de référants.
ldap_sort -- Trie les entrées d'un résultat LDAP
ldap_start_tls -- Démarre TLS
ldap_t61_to_8859 -- Convertit les caractères t6 en caractères 8859
ldap_unbind -- Déconnecte d'un serveur LDAP