LDAP et vérification du login/pass

LDAP et vérification du login/pass - PHP - Programmation

Marsh Posté le 12-10-2006 à 15:24:11    

Bonjour,
 
Je suis sur un dev qui nécessite la vérification d'un login/password sur Active directory (Windows 2000 SP4).
 
Je me connecte en administrateur sur le AD, je fais une recherche d'utilisateur sur "samaccountname" et s'il est trouvé c'est bon.
Mais le problème c'est pour le mot de passe, comment vérifier qu'il est identique à celui du formulaire ? Je ne sais pas trop là...
 
Voilà une page de test pour voir si tout fonctionne, ça pourrais certainement vous aider

Code :
  1. <?php
  2. //serveur (Directory Context)
  3. $ldap['DC'][0]   = "serveur";
  4. $ldap['DC'][1]   = "toto";
  5. $ldap['DC'][2]   = "fr";
  6. //identifiant / mot de passe du formulaire d'identification
  7. $_POST['login'] = "baptiste";
  8. $_POST['password'] = "";
  9. //Identifiant
  10. $ldap['login']    = $_POST['login']."@".$ldap['DC'][0].".".$ldap['DC'][1].".".$ldap['DC'][2];
  11. $ldap['loginAdmin']   = "administrateur";
  12. $ldap['passwordAdmin'] = "password";
  13. $ldap['dn']       = "CN=".$ldap['loginAdmin'].",CN=Users,DC=".$ldap['DC'][0].",DC=".$ldap['DC'][1].",DC=".$ldap['DC'][2];
  14. //Connexion au serveur LDAP
  15. if($ds = ldap_connect($ldap['DC'][0].".".$ldap['DC'][1].".".$ldap['DC'][2])) {
  16. //Connexion admin
  17. if (ldap_bind($ds, $ldap['dn'], $ldap['passwordAdmin'])) {
  18.  echo "Connexion LDAP ".$ds." réussie (".$ldap['loginAdmin']."/".$ldap['passwordAdmin']." ) sur ".$ldap['DC'][0].".".$ldap['DC'][1].".".$ldap['DC'][2]."<br>";
  19.  // Liste des personnes commençant
  20.  $sr = ldap_search ($ds, "dc=".$ldap['DC'][0].",dc=".$ldap['DC'][1].",dc=".$ldap['DC'][2], "samaccountname=".$_POST['login']."" );
  21.  $info = ldap_get_entries ($ds, $sr);
  22.  echo "Nombre de personnes trouvées : ".$info ["count"]."<p>";
  23.  for ($i=0; $i < $info ["count"]; $i++) {
  24.   echo "dn : ". $info[$i]["dn"] ."<br>";
  25.   echo "cn : ". $info[$i]["cn"][0] ."<br>";
  26.   echo "sn : ". $info[$i]["sn"][0] ."<br>";
  27.   echo "samaccountname : ". $info[$i]["samaccountname"][0] ."<p>";
  28.  }
  29.  //Fermeture de la connexion LDAP
  30.  if(ldap_close($ds)) {
  31.   echo "<p>Fermeture de la connexion LDAP ".$ds."</p>";
  32.  }
  33. }
  34. else {
  35.  echo "Connexion LDAP échouée<br>";
  36. }
  37. }
  38. ?>


Message édité par Surfoo le 12-10-2006 à 15:25:58
Reply

Marsh Posté le 12-10-2006 à 15:24:11   

Reply

Marsh Posté le 12-10-2006 à 21:03:51    

tu peux essayer de lancer une connection au ldap avec le login et le password  
 
de memoire, le pass n'est pas stockées ( ou pas exposé ) dans le LDAP

Reply

Marsh Posté le 13-10-2006 à 16:08:27    

effectivement, j'ai trouvé ça en fin d'après midi.
 
Donc en fait j'ai fait :
 
Connexion admin -> recherche de la personne selon le login, si login bon je récup le bon identifiant pour LDAP. Je me connecte avec celui ci et le mot de passe du formulaire et si c'est bon, je crée la session sinon il dégage ailleurs.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed