Certificat LDAPs - Server is unwilling to perform

Bonjour,
Depuis une page PHP je souhaite modifier un mot de passe utilisateur d’un AD, or j’arrive à changer tous les champs hormis le password.
J’ai le message d’erreur " ldap_modify: Server is unwilling to perform (53)".

J’ai mon site Web PHP sur une Debian, un AD Windows 2012 sur lequel je veux modifier mon utilisateur et un serveur Windows 2012 en Autorité de Certification (ADCS). Je ne souhaite pas modifier mon organisation déjà en place et je ne peux pas mettre le ADCS sur le serveur AD.

Mon soucis est plutôt au niveau des certificats, puisque tous les certificats générés ne permettent pas de modifier ce mot de passe.

J’ai essayé le CA sur le Debian en tant qu’autorité tiers et intégrer le certificat dans l’AD, mais cela ne fonctionne pas. J’arrive pourtant bien à me connecter en LDAPs sur l’AD (via ldapsearch -x -H ldaps://…), mais je ne peux toujours pas modifier mon password.

Je souhaitais donc utiliser l’autorité de certification à disposition. En revanche, qui doit certifier qui et qui doit avoir quoi ??

Bref, je commence à m’y perdre, car en cherchant sur Internet, je ne trouve que des serveurs AD et ADCS commun, ou alors des serveurs LDAP/PHP commun, et malgré tous mes essais pas d’amélioration.

En PHP, voici ce que j’utilise :

$basedn = "ou=Utilisateurs,dc=mon_domaine";
$ds = ldap_connect("ldaps://xxx") or die("Impossible de se connecter au serveur LDAP $ds");  
$r=ldap_bind($ds,"mon_admin@mon_domaine","mon_pwd");     

$info['description']  = "ma_description";
ldap_add($ldapconn, $dn, $info);                              => Ca fonctionne

$info["userPassword"] = "un_pwd";
ldap_modify($ldapconn, $dn, $info);                     => Ca fonctionne pas

$info['unicodepwd'] = "un_pwd";  
$retourpwd = ldap_mod_replace($ldapconn, $dn, $info);    => Ca fonctionne pas non plus

Du coup, je commence à tourner en rond.

J’oriente donc plutôt mon problème sur le certificat, mais peut être que je fais également fausse route ?

Je suis preneur de toutes vos idées.

Merci
Florent

Bonjour Florent,

J’ai fait quelques recherches avec le message d’erreur que tu as, et plusieurs pistes se dessinent :

Avec unicodepwd, peut-être que la clé du tableau doit être case sensitive et auquel cas écrire plutôt UnicodePwd. De plus, est-ce que l’erreur retournée avec le deuxième test est la même ?

Bonjour Flavien,

Merci pour tes réponses,

Pour la 1ere option, cela concerne une modif dans le schéma AD, et je ne suis pas trop fan de cette option, mais je la garde de côté au cas où.

Pour l’unicodepwd, j’ai essayé avec les différentes case sensitive et j’ai toujours le même message.
J’ai également essayé avec le code fourni, mais toujours pareil.

J’ai également rajouté pour tous dans l’AD, la possibilité en modif et reset du password, mais pas mieux.

Je vais quand même regarder pour la modif du schéma AD.

Merci et bonne journée.
Florent

Alors en fait, j’ai aussi essayé en ligne de commande et j’ai le même message d’erreur:

#ldapmodify -x -H ldaps://mon_serveur_ad -D CN=“mon_compte_admin”,OU=mon_ou -W -f mon_fichier_ldif

Avec “mon_fichier_ldif” :

dn: cn=un_user_de_test,OU=mon_ou_de_test
changetype: modify
replace: telephonenumber
telephonenumber: un_nouvau_numero           <= OK ça modifie bien le numéro

dn: cn=un_user_de_test,OU=mon_ou_de_test
changetype: modify
replace: unicodepwd
unicodepwd: un_password                     <= Renvoi l'erreur suivante

Pour le mot de passe j’ai l’erreur suivante :

ldap_modify: Server is unwilling to perform (53)
    additional info: 0000001F: SvcErr: DSID-031A12D2, problem 5003 (WILL_NOT_PERFORM), data 0

Du coup, je ne comprends pas pourquoi ça passe pas.

Merci de votre aide.
Florent