LXVIII. 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 accéder à un serveur de dossier à moins que vous ne connaissiez sa structure, de même que vous ne pouvez écrire 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 (Programmer's Guide) très utile, au format HTML (et en anglais).

Pré-requis

Vous devez télécharger et compiler les bibliothèques clientes LDAP depuis soit OpenLDAP ou Bind9.net pour assurer le support LDAP.

Installation

Le support LDAP de PHP n'est pas activé par défaut. Vous devez utiliser l'option de configuration --with-ldap[=DIR] lorsque vous compilez PHP, où DIR est le répertoire d'installation du serveur LDAP. Pour activer le support SASL, assurez-vous que l'option de configuration --with-ldap-sasl[=DIR] est utilisée et que le fichier sasl.h existe sur votre système.

Note aux utilisateurs Win32 : Afin d'activer ce module dans l'environnement Windows, vous devez copier plusieurs bibliothèques depuis le dossier DLL de PHP/Win32 dans le dossier système SYSTEM32 de votre machine (par exemple : C:\WINNT\SYSTEM32 ou C:\WINDOWS\SYSTEM32). Pour PHP <= 4.2.0, copiez libsasl.dll, pour PHP >= 4.3.0, copiez libeay32.dll et ssleay32.dll dans votre dossier système SYSTEM.

Pour pouvoir utiliser les bibliothèques Oracle LDAP, un environnement Oracle propre doit être défini.

Configuration à l'exécution

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

Tableau 1. Options de configuration

NomPar défautModifiableHistorique
ldap.max_links"-1"PHP_INI_SYSTEM 
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à Annexe G.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes pré-définies

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 (entier)

LDAP_DEREF_SEARCHING (entier)

LDAP_DEREF_FINDING (entier)

LDAP_DEREF_ALWAYS (entier)

LDAP_OPT_DEREF (entier)

LDAP_OPT_SIZELIMIT (entier)

LDAP_OPT_TIMELIMIT (entier)

LDAP_OPT_PROTOCOL_VERSION (entier)

LDAP_OPT_ERROR_NUMBER (entier)

LDAP_OPT_REFERRALS (entier)

LDAP_OPT_RESTART (entier)

LDAP_OPT_HOST_NAME (entier)

LDAP_OPT_ERROR_STRING (entier)

LDAP_OPT_MATCHED_DN (entier)

LDAP_OPT_SERVER_CONTROLS (entier)

LDAP_OPT_CLIENT_CONTROLS (entier)

LDAP_OPT_DEBUG_LEVEL (entier)

GSLC_SSL_NO_AUTH (entier)

GSLC_SSL_ONEWAY_AUTH (entier)

GSLC_SSL_TWOWAY_AUTH (entier)

Exemples

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équence de base avec LDAP est
// connexion, liaison, recherche, interprétation du résultat
// déconnexion

echo '<h3>requête de test de LDAP</h3>';
echo
'Connexion ...';
$ds=ldap_connect("localhost");  // doit être un serveur LDAP valide !
echo 'Le résultat de connexion est ' . $ds . '<br />';

if (
$ds) {
   echo
'Liaison ...';
  
$r=ldap_bind($ds);    // connexion anonyme, typique
                                     // pour un accès en lecture seule.
  
echo 'Le résultat de connexion est ' . $r . '<br />';

   echo
'Recherchons (sn=S*) ...';
  
// Recherche par nom
  
$sr=ldap_search($ds,"o=My Company, c=US", "sn=S*"); 
   echo
'Le résultat de la recherche est ' . $sr . '<br />';

   echo
'Le nombre d\'entrées retournées est ' . ldap_count_entries($ds,$sr)
         .
'<br />';

   echo
'Lecture des entrées ...<br />';
  
$info = ldap_get_entries($ds, $sr);
   echo
'Données pour ' . $info["count"] . ' entrées:<br />';

   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] . '<br />';
   }

   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 commandes 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 -- Authentification au serveur LDAP
ldap_close -- Alias de ldap_unbind()
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 -- Convertit 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 -- Retourne le premier attribut
ldap_first_entry -- Retourne la première entrée
ldap_first_reference --  Retourne la première référence
ldap_free_result -- Libère la mémoire du résultat
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
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_sasl_bind --  Authentification au serveur LDAP en utilisant SASL
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


Rechercher une fonction PHP

Réseaux sociaux

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher les interactions avec les réseaux sociaux sur ces pages.

 

Nuage de mots clés

5 mots clés dont 0 définis manuellement (plus d'information...).

Avertissement

Cette page ne possède pas encore de mots clés manuels, ceci est donc un exemple automatique (les niveaux de pertinence sont fictifs, mais les liens sont valables). Pour tester le nuage avec une page qui contient des mots définis manuellement, vous pouvez cliquer ici.

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher le nuage de mots clés.

 

Références

  1. Consulter le document html Langue du document: fr Manuel PHP : http://be2.php.net, ldap

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

 

Astuce pour imprimer les couleurs des cellules de tableaux : http://www.gaudry.be/ast-rf-450.html
Aucun commentaire pour cette page

© Ce document issu de l′infobrol est enregistré sous le certificat Cyber PrInterDeposit Digital Numbertection. Enregistrement IDDN n° 5329-3774
Document créé le 20/09/06 22:15, dernière modification le Vendredi 17 Juin 2011, 12:12
Source du document imprimé : http://www.gaudry.be/php-rf-ref.ldap.html Document affiché 1 fois ce mois de Juin.
St.Gaudry©07.01.02
Outils (masquer)
||
Recherche (afficher)
Recherche :

Utilisateur (masquer)
Apparence (afficher)
Stats (afficher)
15832 documents
452 astuces.
549 niouzes.
3099 definitions.
447 membres.
8115 messages.

Document genere en :
0,26 seconde

Mises à jour :
Mises à jour du site
Citation (masquer)
Au cinéma vous écrivez pour séduire, pour que les gens sortent de chez eux, alors que sur le petit écran, vous écrivez pour ne pas les heurter et qu'ils restent devant leur poste.

Gérard Bitton
 
l'infobrol
Nous sommes le Dimanche 03 Juin 2012, 06:40, toutes les heures sont au format GMT+1.00 Heure, heure d'été (+1)