Modifier le mot de passe dans l'active Directory

Résolu
marliche0 Messages postés 66 Date d'inscription mardi 8 mars 2005 Statut Membre Dernière intervention 30 septembre 2008 - 16 nov. 2005 à 11:47
cs_Crazyht Messages postés 1522 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 21 août 2010 - 16 nov. 2005 à 14:11
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

zebobo5 Messages postés 273 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 6 février 2009 1
16 nov. 2005 à 14:03
Esaye qd mm avec :

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

<hr>ZeBobo5
N'oubliez pas de cloturer votre post.
3
cs_Crazyht Messages postés 1522 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 21 août 2010 8
16 nov. 2005 à 12:20
essaie plutot :

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

A++

CrazyHT
MVP Visual C#.NET

[Admin Codes-Sources]
[Membre Developer-Association]
0
zebobo5 Messages postés 273 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 6 février 2009 1
16 nov. 2005 à 12:34
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.
0
marliche0 Messages postés 66 Date d'inscription mardi 8 mars 2005 Statut Membre Dernière intervention 30 septembre 2008
16 nov. 2005 à 12:36
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});
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
marliche0 Messages postés 66 Date d'inscription mardi 8 mars 2005 Statut Membre Dernière intervention 30 septembre 2008
16 nov. 2005 à 12:47
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();
0
cs_Crazyht Messages postés 1522 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 21 août 2010 8
16 nov. 2005 à 13:41
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]
0
cs_Crazyht Messages postés 1522 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 21 août 2010 8
16 nov. 2005 à 14:11
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
0
Rejoignez-nous