DirectoryEntry

fabrizio85 Messages postés 2 Date d'inscription vendredi 16 mars 2007 Statut Membre Dernière intervention 19 mars 2007 - 16 mars 2007 à 11:12
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 - 19 mars 2007 à 11:46
Bonjour,

Je souhaiterais mettre à jour le mot de passe de mes utilisateurs sur le serveur AD.

Actuellement, j'utilise la méthode :
mon_utilisateur.Invoke("SetPassword", new object[] {"fab"});

Ceci fonctionne très bien !

Pour info c'est une autre application qui va appelé cette méthode.

Mais voilà, ça veut dire qu'à un moment donné, mon application .NET connaît le mot de passe "en clair" de mon utilisateur même si celui-ci m'est envoyé crypté en AES, je suis obligé de le décrypter de mon côté et faire le SetPassword.

Je sais que SetPassword va lui-même crypter le mot de passe en clair que je lui aurai donné et mettre à jour le bon attribut qui va bien !

Je souhaiterais pouvoir mettre à jour ce mot de passe sans passer par SetPassword et donc mettre à jour l'attribut qui va bien directement avec un mot de passe déjà crypté.

J'ai essayé avec l'attribut "userPassword" mais ça ne fonctionne pas :

//Initialisation de l'utilisateur
utilisateur = connexion.Children.Find("cn=toto,ou=People","user");
// Initialisation du mot de passe
utilisateur.Invoke("SetPassword", new object[] {"fabo"});

// On specifie le nouveau mot de passe en clair ça doit être
utilisateur.Properties["userPassword"].Add("{SHA}sG5W9LcytYiR0PgNq7CPCXUsYjg=");
utilisateur.CommitChanges();

Avec ce code je peux toujours me logguer avec toto et "fabo" comme mot de passe alors que je ne devrais plus car j'ai redéfini mon mot de passe.

Idem avec un utilisateur qui a déjà un mot de passe, je le redéfinie uniquement mais ça n'est pas pris en compte :
utilisateur.Properties["userPassword"].Add("{SHA}sG5W9LcytYiR0PgNq7CPCXUsYjg=");
utilisateur.CommitChanges();

Si quelqu'un a une idée ou une remarque, je suis preneur !

A bientôt ...

Fabrice

3 réponses

ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
16 mars 2007 à 20:54
salut,

à priori :
utilisateur.Properties["userPassword"].Add("{SHA}sG5W9LcytYiR0PgNq7CPCXUsYjg=")
ca doit ajouter un mot de passe à la liste donc peut être que ca ne fait rien vu que le mot de passe doit être unique...quoique il me semble qu'il puisse y avoir deux mots de passes valides en même temps (j'ai seulement entendu dire...mais ca me surprant)...

peut être avec (quelque chose dans le genre...) :
utilisateur.Properties["userPassword"][0] ="{SHA}sG5W9LcytYiR0PgNq7CPCXUsYjg="

ShareVB
0
fabrizio85 Messages postés 2 Date d'inscription vendredi 16 mars 2007 Statut Membre Dernière intervention 19 mars 2007
19 mars 2007 à 10:06
Salut ShareVB,

Merci pour ta réponse, malheureusement, ça ne fonctionne pas !
As-tu une autre idée ?

Merci pour ta participation.

Fabrice
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
19 mars 2007 à 11:46
salut,

dans cette page, il est dit que on peut modifier plus ou moins directement les attributs LDAP, voir si tu peux modifier userPassword au lieu de unicodePwd...
http://www.awprofessional.com/articles/article.asp?p=474649&seqNum=4&rl=1

sinon, mais moins sur :
http://msdn2.microsoft.com/en-us/library/aa370659.aspx
http://msdn2.microsoft.com/en-us/library/aa371124.aspx

ShareVB
0
Rejoignez-nous