Modifier le mot de passe dans l'active Directory [Résolu]

Signaler
Messages postés
66
Date d'inscription
mardi 8 mars 2005
Statut
Membre
Dernière intervention
30 septembre 2008
-
Messages postés
1522
Date d'inscription
mardi 18 décembre 2001
Statut
Modérateur
Dernière intervention
21 août 2010
-
Bonjour,

J'utilise un formulaire c# pour m'identifier à l'aide des données de l'active directory sur mes pages Intranet.
J'aimerais proposer à l'utilisateur de modifier son mot de passe.
J'utilise donc cette partie de code:


// Connexion à l'annuaire


DirectoryEntry Ldap = new DirectoryEntry("LDAP://votre-nom-AD", "Login", "Password");


// Nouvel objet pour instancier la recherche


DirectorySearcher searcher = new DirectorySearcher(Ldap);


// On modifie le filtre pour ne chercher que l'user cherché


searcher.Filter = "(SAMAccountName=TEST)";


// Pas de boucle foreach car on ne cherche qu'un user


SearchResult result = searcher.FindOne()


// On récupère l'objet trouvé lors de la recherche


DirectoryEntry DirEntry = result.GetDirectoryEntry();




//modif du numero de tel
DirEntry.Properties["TelephoneNumber"].Value = "0123456789";




// On modifie la propriete du password


DirEntry.Properties["nom du champ que je cherche"].Value= "Nouveau password";




// On envoie les changements à Active Directory


DirEntry.CommitChanges();

Mais je ne connait pas le champ pour le mot de passe.
Pouvez-vous m'aider.
Suis-je sur la bonne voie ou bien faut-il que j'utilise set-Password? et comment dois-je faire?

Merci d'avance

7 réponses

Messages postés
273
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
6 février 2009
1
Esaye qd mm avec :

DirEntry.Invoke("ChangePassword", new object [] {strAncienPassword, strNouveauPass});

<hr>ZeBobo5
N'oubliez pas de cloturer votre post.
Messages postés
1522
Date d'inscription
mardi 18 décembre 2001
Statut
Modérateur
Dernière intervention
21 août 2010
5
essaie plutot :

DirEntry.Invoke("SetPassword", new object [] {"motdepasse"});

A++

CrazyHT
MVP Visual C#.NET

[Admin Codes-Sources]
[Membre Developer-Association]
Messages postés
273
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
6 février 2009
1
Essaye avec ceci :



string quotePwd;


byte[] pwdBin;





quotePwd = String.Format(@"""{0}""", password);



pwdBin = System.Text.Encoding.Unicode.GetBytes(quotePwd);





usr.Properties["unicodePwd"].Value = pwdBin;



usr.CommitChanges();


<hr>ZeBobo5
N'oubliez pas de cloturer votre post.
Messages postés
66
Date d'inscription
mardi 8 mars 2005
Statut
Membre
Dernière intervention
30 septembre 2008

Cela me donne le message d'erreur suivant:

System.UnauthorizedAccessException: Access is denied.

ASP.NET is not authorized to access the requested resource. Consider granting access rights to the resource to the ASP.NET request identity. ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5 or Network Service on IIS 6) that is used if the application is not impersonating. If the application is impersonating via , the identity will be the anonymous user (typically IUSR_MACHINENAME) or the authenticated request user.

To grant ASP.NET write access to a file, right-click the file in Explorer, choose "Properties" and select the Security tab. Click "Add" to add the appropriate user or group. Highlight the ASP.NET account, and check the boxes for the desired access.

Source Error:


Line 34: // On modifie la propriété description de l'utilisateur
Line 35: //DirEntry.Properties["Password"].Value = passwordNew.Text;
Line 36: DirEntry.Invoke("SetPassword", new object [] {passwordNew.Text});
Messages postés
66
Date d'inscription
mardi 8 mars 2005
Statut
Membre
Dernière intervention
30 septembre 2008

Pour :
string quotePwd;
byte[] pwdBin;

quotePwd = String.Format(@"""{0}""", password);
pwdBin = System.Text.Encoding.Unicode.GetBytes(quotePwd);

usr.Properties["unicodePwd"].Value = pwdBin;
usr.CommitChanges();

J'ai ce message:

Exception Details: System.Runtime.InteropServices.COMException: Unspecified error

Source Error:


Line 42: pwdBin = System.Text.Encoding.Unicode.GetBytes(quotePwd);
Line 43:
Line 44: DirEntry.Properties["unicodePwd"].Value = pwdBin;
Line 45: DirEntry.CommitChanges();
Messages postés
1522
Date d'inscription
mardi 18 décembre 2001
Statut
Modérateur
Dernière intervention
21 août 2010
5
En effet l'utilisateur ASPNET n'est pas autorisé à modifier les données de l'Active Directory.

A++

CrazyHT
MVP Visual C#.NET

[Admin Codes-Sources]
[Membre Developer-Association]
Messages postés
1522
Date d'inscription
mardi 18 décembre 2001
Statut
Modérateur
Dernière intervention
21 août 2010
5
Ah oui pardon SetPassword c'est pour la creation d'un compte (ou en mode Admin pour reseter le mode de passe) pour changer son propre password c'est plutot ChangePassword :)

A++

CrazyHT
MVP Visual C#.NET