Bonjour,
j'ai un problème assez strange : j'ai fait une page de test en php me permettant de me connecter à un serveur ldap et d'y faire une recherche. Cette page fonctionnant correctement, j'ai voulu la mettre en pratique dans qqch de plus concret.
J'ai créé une classe connexionLdap qui est sensée ne créer qu'une instance de la connexion (Singleton), mais dans cette classe, il me semble impossible de m'authentifier au serveur.
Dans ma page de test (elle fonctionne puisque pas d'erreur et m'affiche le résultat d'une recherche) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
$conn=ldap_connect($ldapServer);
// 1ere étape : on teste : le serveur LDAP est-il trouvé ?
if (!$conn)
 echo "connexion impossible au serveur LDAP";
$bindServerLDAP=ldap_bind($conn,$dn,$mdp);
// en cas de succès de la liaison, renvoie Vrai
if ($bindServerLDAP)
  echo "Le resultat de connexion est ".$bindServerLDAP.") <br />";
else
  die("Liaison impossible au serveur ldap ...<br />");
Dans mon objet connexionLdap, j'ai a peu près la même chose :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
// Constructeur de la classe connexionLdap : crée l'objet permettant de se connecter à la base LDAP et initialise ses variables aux valeurs par défaut (adresse ip du serveur, port etc ...)
 private function __construct($ldapServer, $ldapServerPort, $mdp, $dn)
 {
  $this->ldapServer = $ldapServer ; // on affecte la variable ldapServer à l'objet connexionLdap.
  $this->ldapServerPort = $ldapServerPort ; // on affecte la variable ldapServerPort à l'objet connexionLdap.
  $this->mdp = $mdp ; // on affecte la variable mdp à l'objet connexionLdap.
  $this->dn = $dn ; // on affecte la variable dn à l'objet connexionLdap.
 
  $this->ldapConnect() ; // on appel la méthode ldapConnect pour établir une connexion à proprement parler.
 }
 
 // Fonction appelée par le constructeur pour créer une connexion.
 private function ldapConnect()
 {
  try {
   $conn=ldap_connect($this->ldapServer) ;
   if (!$conn) {
    throw new Exception('Aucun serveur LDAP n\'était disponible lors de la connexion<br />') ;
   }
   else {
    print ("Liaison au serveur : ". ldap_error($conn)." ");
    $bindServerLDAP=ldap_bind($conn, $this->dn, $this->mdp) ;
    if (!$bindServerLDAP) {
     throw new Exception('L\'authentification au serveur LDAP a échouée<br />') ;
    }
    echo "Connexion au serveur LDAP réussie en tant que ".$this->dn ;
   }
  }
  catch(Exception $e) {
   echo 'Erreur : '.$e -> getMessage() ;
  }
 }
Le problème est que lorsque je teste ca : j'ai a l'écran
Liaison au serveur : Success
Erreur : L'authentification au serveur LDAP a échouée
Je vous remercie de votre aide