[LDAP] Changer mot de passe Active Directory via PHP

Changer mot de passe Active Directory via PHP [LDAP] - PHP - Programmation

Marsh Posté le 02-04-2010 à 11:37:33    

Bonjour,
J’ai un problème depuis quelques jours et je n’arrive pas à le résoudre.
Je veux que les utilisateurs puissent changer leur mot de passe dans l’active directory via une page PHP.
Tout ce que je trouve sur internet concerne openldap.
Je me connecte via une connexion LDAPS et la connexion se passe sans soucis.
De mes recherches sur le net, j’en ai déduit que l’attribut correspondant au mot de passe est unicodepwd
Déjà je n’arrive pas à trouver quel chiffrement il faut utiliser SHA1 ou MD5 ?
Quel que soit le chiffrement que je choisis, exécute le code ci-dessous  

Code :
  1. //connexion ldap securisée
  2. $ldapconn=ldap_connect("LDAP://".$server,$port);
  3. if($ldapconn)
  4. {
  5. ldap_set_option ($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
  6. ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);
  7. //identification avec compte admin
  8. $ldapbind = ldap_bind($ldapconn,$rootdn,$rootpw);
  9. if($ldapbind)
  10. {
  11.  //recherche du user courant
  12.  $sr = ldap_search ($ldapconn, $rootdc, $filter);
  13.  if($sr)
  14.  {
  15.    //encodage du password
  16.    //$userpassword =  "{MD5}".base64_encode(pack("H*",md5( $pass)));
  17.    $userpassword = "{SHA}" . base64_encode( sha1( $pass, TRUE ));
  18.    $entry['unicodepwd'] = $userpassword;
  19.    //Modification de l'attribut unicodepwd
  20.    if(ldap_modify($ldapconn, $userdn, $entry))
  21.    {
  22.     echo 'the password has been changed';
  23.    }
  24.    else
  25.    {
  26.     echo 'erreur ldap_modify '.ldap_error($ldapconn);
  27.    }
  28.  }
  29.  else
  30.  {
  31.   echo 'erreur ldap_search '.ldap_error($ldapconn);
  32.  }
  33. }
  34. else
  35. {
  36.  echo 'erreur ldap_bind '.ldap_error($ldapconn);
  37. }
  38. }
  39. else
  40. {
  41. echo 'erreur ldap_connect '.ldap_error($ldapconn);
  42. }


 
l'erreur que j'obtiens est :  

Code :
  1. ldap_modify Server is unwilling to perform


 
Il faut savoir que j'ai essayé avec deux types de user : utilisateur et  inetOrgPerson
 
Le server IIS est un windows server 2003
 
Merci de votre aide


Message édité par fatloui le 02-04-2010 à 11:50:53
Reply

Marsh Posté le 02-04-2010 à 11:37:33   

Reply

Marsh Posté le 02-04-2010 à 13:35:35    

A-t-il les droits pour procéder à cette modif ?
Si tu exécutes PHP avec un compte admin du domaine ça fonctionne ?


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 02-04-2010 à 14:08:21    

Le compte utilisé pour se connecter est un admin du domaine.
ici rootdn est admin du domaine
non ca ne fonctionne pas

Reply

Marsh Posté le 06-04-2010 à 10:27:39    

petit up
 
Personne n'a d'idées ?

Reply

Marsh Posté le 25-06-2010 à 17:37:56    

Bonjour,
 
essaye ce bout de code :
 
$PASSWORD = "Exemple123";
$PASSWORD = "\"".$PASSWORD."\"";
$PASSWORD_INITIALISE = "";          
for ($i = 0; $i < strlen($PASSWORD); $i++)
 {
  $PASSWORD_INITIALISE .= "{$PASSWORD{$i}}\000";
 }
$RENEW["unicodePwd"]=array($PASSWORD_INITIALISE);
 
Pour moi c'est ok avec cette méthode :)
 
++

Reply

Sujets relatifs:

Leave a Replay

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