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

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

Votre réponse

7 réponses

Meilleure réponse
Messages postés
273
Date d'inscription
dimanche 5 octobre 2003
Dernière intervention
6 février 2009
- 16 nov. 2005 à 14:03
3
Merci
Esaye qd mm avec :

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

<hr>ZeBobo5
N'oubliez pas de cloturer votre post.

Merci zebobo5 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de zebobo5
Messages postés
1523
Date d'inscription
mardi 18 décembre 2001
Dernière intervention
21 août 2010
- 16 nov. 2005 à 12:20
0
Merci
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
Messages postés
273
Date d'inscription
dimanche 5 octobre 2003
Dernière intervention
6 février 2009
- 16 nov. 2005 à 12:34
0
Merci
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
Messages postés
66
Date d'inscription
mardi 8 mars 2005
Dernière intervention
30 septembre 2008
- 16 nov. 2005 à 12:36
0
Merci
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
Messages postés
66
Date d'inscription
mardi 8 mars 2005
Dernière intervention
30 septembre 2008
- 16 nov. 2005 à 12:47
0
Merci
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
Messages postés
1523
Date d'inscription
mardi 18 décembre 2001
Dernière intervention
21 août 2010
- 16 nov. 2005 à 13:41
0
Merci
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
Messages postés
1523
Date d'inscription
mardi 18 décembre 2001
Dernière intervention
21 août 2010
- 16 nov. 2005 à 14:11
0
Merci
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.