Notre magasin d'utilisateurs est un serveur LDAP appelé eDirectory. Comment changer les mots de passe des utilisateurs en utilisant System.DirectoryServices.Protocols?Comment modifier les mots de passe à l'aide de System.DirectoryServices.Protocols
Répondre
J'ai utilisé un code similaire à celui-ci pour me connecter à un LDAP basé sur Sun One afin de changer le mot de passe d'un utilisateur. (Ne devrait pas être différent de Novell eDirectory ...)
using System.DirectoryServices.Protocols;
using System.Net;
//...
// Connect to the directory:
LdapDirectoryIdentifier ldi = new LdapDirectoryIdentifier("theServerOrDirectoryName");
// You might need to specify a full DN for "theUsername" (I had to):
NetworkCredential nc = new NetworkCredential("theUsername", "theOldPassword");
// You might need to experiment with setting a different AuthType:
LdapConnection connection = new LdapConnection(ldi, nc, AuthType.Negotiate);
DirectoryAttributeModification modifyUserPassword = new DirectoryAttributeModification();
modifyUserPassword.Operation = DirectoryAttributeOperation.Replace;
modifyUserPassword.Name = "userPassword";
modifyUserPassword.Add("theNewPassword");
ModifyRequest modifyRequest = new ModifyRequest("theUsername", modifyUserPassword);
DirectoryResponse response = connection.SendRequest(modifyRequest);
Si vous utilisez .NET 3.5 ou version ultérieure, vous pouvez envisager cette réponse: http://stackoverflow.com/questions/1066131/how-to-programaticly-change-active-directory-password – Philippe
Vous devez supprimer le mot de passe, puis l'ajouter à nouveau. Quand je l'ai fait, j'ai utilisé la bibliothèque LDAP de Novell. Vous devrez peut-être jouer avec DirectoryEntry pour le faire fonctionner.
Deleting non readable attribute from eDirectory - LDAP through ADSI/System.DirectoryServices
vous pourriez rencontrer des problèmes en fonction du type de mot de passe que vous utilisez dans eDirectory
LDAP/Universal Password with eDirectory 8.8
How to change eDirectory or Universal Password through LDAP ici est un exemple de LDIF
dn: cn=<myuser>,ou=<myou>,o=<myo>
changetype: modify
replace: userPassword
userPassword: <newPassWord>
La bibliothèque C# de Novell ne prend pas en charge SSL. Donc, je ne peux pas vraiment l'utiliser. Je pense que je dois utiliser S.DS.P –
Je n'ai actuellement pas de serveur LDAP en cours d'exécution (et encore moins eDirectory) donc je ne peux pas fournir beaucoup plus d'aide. Mais j'espère que cela vous amène au moins dans le parc de balle. –
Je suis d'accord avec les approches de deux par Noalt et Matthew Whited. Mais il y a une subtile importation.
Il existe une différence entre un changement de mot de passe utilisateur et un changement de mot de passe administratif.
Si vous remplacez le userPassword, qui est un changement de mot de passe administrateur, et en fonction des politiques de mot de passe, le mot de passe peut expirer tout de suite. (eDir utilise l'expiration du mot de passe, puis le nombre de connexions de grâce).
Si vous fournissez l'ancien et le nouveau mot de passe, vous effectuez une réinitialisation du mot de passe initiée par l'utilisateur.
Il existe un exemple de code pour le changement de mot de passe utilisateur et le changement de mot de passe administratif à l'aide de System.DirectoryServices.Protocols dans le manuel the .net developer's guide to directory services programming. Je suppose que je ne peux pas coller l'exemple de code ici pour des raisons de copyright mais je peux recommander d'acheter le livre si vous êtes intéressé à travailler avec System.DirectoryServices.Protocols et System.DirectoryServices.
Alors, je suis curieux, est-ce que ma réponse m'a aidé? L'avez-vous fait fonctionner avec Novell eDirectory? –
Non, je ne l'ai jamais eu au travail. –