Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1886 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [LDAP] Changer mot de passe Active Directory via PHP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[LDAP] Changer mot de passe Active Directory via PHP

n°1980314
fatloui
I'll be back
Posté le 02-04-2010 à 11:37:33  profilanswer
 

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
mood
Publicité
Posté le 02-04-2010 à 11:37:33  profilanswer
 

n°1980367
NewsletTux
<Insérez ici votre vie />
Posté le 02-04-2010 à 13:35:35  profilanswer
 

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
n°1980372
fatloui
I'll be back
Posté le 02-04-2010 à 14:08:21  profilanswer
 

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

n°1981087
fatloui
I'll be back
Posté le 06-04-2010 à 10:27:39  profilanswer
 

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

n°2004861
nilval
Posté le 25-06-2010 à 17:37:56  profilanswer
 

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 :)
 
++


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [LDAP] Changer mot de passe Active Directory via PHP

 

Sujets relatifs
[PHP / SQL] Conception Menu Dynamique a sous Categories Variables[PHP] foreach qui ignore des valeurs d'un tableau
chaine avec <br> qui ne passe pas par _GETModifier un script java-script en PhP / MySQL
[PHP]lister les bases mysql...PHP, Excel et ODBC
Comparaison entre 2 dates/algorithme PHPMenu /PHP Lien avec MySQL
[PHP] Cookies : une partie disparait inexplicablement -> Plante Apache[PHP] pour ne pas que 0111 == 111
Plus de sujets relatifs à : [LDAP] Changer mot de passe Active Directory via PHP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR