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 :
- //connexion ldap securisée
- $ldapconn=ldap_connect("LDAP://".$server,$port);
- if($ldapconn)
- {
- ldap_set_option ($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
- ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);
- //identification avec compte admin
- $ldapbind = ldap_bind($ldapconn,$rootdn,$rootpw);
- if($ldapbind)
- {
- //recherche du user courant
- $sr = ldap_search ($ldapconn, $rootdc, $filter);
- if($sr)
- {
- //encodage du password
- //$userpassword = "{MD5}".base64_encode(pack("H*",md5( $pass)));
- $userpassword = "{SHA}" . base64_encode( sha1( $pass, TRUE ));
- $entry['unicodepwd'] = $userpassword;
- //Modification de l'attribut unicodepwd
- if(ldap_modify($ldapconn, $userdn, $entry))
- {
- echo 'the password has been changed';
- }
- else
- {
- echo 'erreur ldap_modify '.ldap_error($ldapconn);
- }
- }
- else
- {
- echo 'erreur ldap_search '.ldap_error($ldapconn);
- }
- }
- else
- {
- echo 'erreur ldap_bind '.ldap_error($ldapconn);
- }
- }
- else
- {
- echo 'erreur ldap_connect '.ldap_error($ldapconn);
- }
|
l'erreur que j'obtiens est :
Code :
- 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