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

marliche0 66 Messages postés mardi 8 mars 2005Date d'inscription 30 septembre 2008 Dernière intervention - 16 nov. 2005 à 11:47 - Dernière réponse : cs_Crazyht 1524 Messages postés mardi 18 décembre 2001Date d'inscription 21 août 2010 Dernière intervention
- 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
Afficher la suite 

7 réponses

Répondre au sujet
zebobo5 273 Messages postés dimanche 5 octobre 2003Date d'inscription 6 février 2009 Dernière intervention - 16 nov. 2005 à 14:03
+3
Utile
Esaye qd mm avec :

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

<hr>ZeBobo5
N'oubliez pas de cloturer votre post.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de zebobo5
cs_Crazyht 1524 Messages postés mardi 18 décembre 2001Date d'inscription 21 août 2010 Dernière intervention - 16 nov. 2005 à 12:20
0
Utile
essaie plutot :

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

A++

CrazyHT
MVP Visual C#.NET

[Admin Codes-Sources]
[Membre Developer-Association]
Commenter la réponse de cs_Crazyht
zebobo5 273 Messages postés dimanche 5 octobre 2003Date d'inscription 6 février 2009 Dernière intervention - 16 nov. 2005 à 12:34
0
Utile
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.
Commenter la réponse de zebobo5
marliche0 66 Messages postés mardi 8 mars 2005Date d'inscription 30 septembre 2008 Dernière intervention - 16 nov. 2005 à 12:36
0
Utile
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});
Commenter la réponse de marliche0
marliche0 66 Messages postés mardi 8 mars 2005Date d'inscription 30 septembre 2008 Dernière intervention - 16 nov. 2005 à 12:47
0
Utile
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();
Commenter la réponse de marliche0
cs_Crazyht 1524 Messages postés mardi 18 décembre 2001Date d'inscription 21 août 2010 Dernière intervention - 16 nov. 2005 à 13:41
0
Utile
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]
Commenter la réponse de cs_Crazyht
cs_Crazyht 1524 Messages postés mardi 18 décembre 2001Date d'inscription 21 août 2010 Dernière intervention - 16 nov. 2005 à 14:11
0
Utile
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
Commenter la réponse de cs_Crazyht

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.