Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/04/2006, 12h48   #1
En attente de confirmation mail
 
Inscription : mars 2005
Messages : 77
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 77
Points : 30
Points : 30
Par défaut [Sécurité] Problème d'identification LDAP

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 :
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 :
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
Citation:
Liaison au serveur : Success
Erreur : L'authentification au serveur LDAP a échouée
Je vous remercie de votre aide
WalidNat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 18h26   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Ton DN est correct et complet ? Le mot de passe également ? T'es sûr que ta classe implémente un singleton ? Et $conn tu ne devrais pas la garder comme variable privée (ou protected) de classe ?


Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2006, 11h02   #3
Membre actif
 
Avatar de Original Prankster
 
Inscription : juillet 2005
Messages : 226
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : juillet 2005
Messages : 226
Points : 161
Points : 161
Envoyer un message via MSN à Original Prankster Envoyer un message via Skype™ à Original Prankster
J'ai exactement le même problème, avec une tentative de liaison que je laisse anonyme... Le ldap_connect() me renvoie bien un ressource link mais le ldap_bind() me signifie un warning comme quoi mon serveur LDAP ne peut pas être contacté...

J'ai posté un message expliquant de façon plus détaillée ma façon de procéder : http://www.developpez.net/forums/sho...d.php?t=148270

Comme toi, j'exécute ce type de code dans une fonction membre d'une classe. J'ai donc essayé de sortir le code, mais le problème est le même. Se pourrait-il qu'il s'agisse d'un pb de configuration d'Apache ?
Original Prankster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2006, 17h47   #4
En attente de confirmation mail
 
Inscription : mars 2005
Messages : 77
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 77
Points : 30
Points : 30
J'ai trouvé la réponse au problème : il faut spécifier qu'on utilise la version 3 juste après la cnx, sinon il ne bind pas :

Code :
ldap_set_option($this->conn, LDAP_OPT_PROTOCOL_VERSION, 3) ;
WalidNat est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h06.


 
 
 
 
Partenaires

Hébergement Web