6.Le langage PHP

6.16.LDAP

6.16.3.Accès via les fonctions de l'extension ldap

6.16.3.1.Introduction

Nous avons vu dans le chapitre précédent comment installer l'extension ldap nécessaire à l'accès en PHP à un annuaire LDAP.
Dans ce chapitre, nous verrons comment accéder à l'annuaire en utilisant directement les fonctions PHP fournies par cette extension (une autre solution consiste à utiliser une bibliothèque simplifiant l'utilisation de ces fonctions, comme avec zend-ldap[en savoir plus]).
Nous procéderons en 3 temps:
  1. La connexion (avec authentification, choix du protocole)
  2. L'accès en lecture (pour effectuer une recherche)
  3. L'accès en écriture (pour ajouter des données)

6.16.3.2.Connexion, authentification, paramétrage

6.16.3.2.1.La connexion (son paramétrage)

6.16.3.2.1.1.ldap_connect()

La connexion (ou plus généralement la déclaration des paramètres de connexion) se fait par l'intermédiaire de la fonction ldap_connect() avec pour paramètre la chaîne de caractères précisant l'adresse du serveur LDAP et éventuellement un second paramètre pour préciser le port d'écoute (notamment si celui-ci diffère du port par défaut 389).
<?php
$ldapURL = 'ldap.forumsys.com';
$ldapPort = 389; // Port par défaut = 389

$ldap = ldap_connect($ldapURL, $ldapPort);
if (false === $ldap) die('Echec de la connexion');
?>
Cette fonction retourne une ressource (LDAP) qui devra être passée en paramètre des fonctions appelées ultérieurement.
rem
  • Cette fonction a de bonnes chances de ne pas lever d'erreur y compris avec une adresse de serveur LDAP invalide. En effet, la connexion proprement dite ne se fait pas forcément au moment de cet appel mais plus tard (c'est tout du moins ce qu'il se passe avec OpenLDAP 2).

6.16.3.2.1.2.La sélection de la version de protocole

Si votre serveur LDAP n'utilise pas la version 2 du protocole LDAP pour communiquer alors vous devrez obligatoirement en préciser la version via la fonction de configuration ldap_set_option(). Cette fonction attend 3 paramètres:
  • La ressource LDAP (retournée par ldap_connect())
  • Une constante identifiant le paramètre à configurer (dans ce cas précis LDAP_OPT_PROTOCOL_VERSION)
  • La valeur du paramètre (ici, probablement, 2 ou 3 pour la version du protocole)
<?php
$ldapURL = 'ldap.forumsys.com';
$ldapPort = 389; // Port par défaut = 389
$ldapVersionProtocole = 3; // Version par défaut = 2

$ldap = ldap_connect($ldapURL, $ldapPort);
if (false === $ldap) die('Echec de la connexion');

// Sélection du protocol (Non requis dans le cas d'un protocol v2)
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, $ldapVersionProtocole);
?>

6.16.3.2.2.L'authentification

Avant de vous laisser accéder aux données, le serveur LDAP exigera probablement une authentification (un identifiant et un mot de passe). Pour vous authentifier, vous pouvez faire appel à la fonction ldap_bind(). Cette fonction attend communément 3 paramètres:
  • La ressource LDAP (retournée par ldap_connect())
  • L'identifiant LDAP de l'utilisateur (i.e. son DN)
  • Le mot de passe
<?php
$ldapURL = 'ldap.forumsys.com';
$ldapPort = 389; // Port par défaut = 389
$ldapVersionProtocole = 3; // Version par défaut = 2
$ldapIdentifiant = 'cn=read-only-admin,dc=example,dc=com';
$ldapMotDePasse = 'password';

$ldap = ldap_connect($ldapURL, $ldapPort);
if (false === $ldap) die('Echec de la connexion');
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, $ldapVersionProtocole);

$retour = ldap_bind($ldap, $ldapIdentifiant, $ldapMotDePasse);
if (false === $retour) die('Echec de l\'authentification (ou de la connexion)');
?>
Ici vous pouvez apprendre :
Forum PHP
Version imprimable: imprimer