1

ユーザー ストアは、eDirectory と呼ばれる LDAP サーバーです。System.DirectoryServices.Protocols を使用してユーザーのパスワードを変更するにはどうすればよいですか?

4

4 に答える 4

5

これと同様のコードを使用して、Sun One ベースの LDAP に接続し、ユーザーのパスワードを変更しました。(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);
于 2009-10-12T07:52:25.040 に答える
1

Per Noalt と Matthew Whited の 2 人のアプローチに同意します。しかし、重要な点が 1 つあります。

ユーザー パスワードの変更と管理者パスワードの変更には違いがあります。

userPassword を置き換える場合、これは管理者パスワードの変更であり、パスワード ポリシーによっては、パスワードがすぐに期限切れになる可能性があります。(eDir はパスワードの有効期限を使用し、次に猶予ログインのカウントを使用します)。

古いパスワードと新しいパスワードを提供する場合は、ユーザーが開始したパスワードのリセットを行っています。

于 2011-08-25T01:02:16.530 に答える
1

パスワードを削除してから、再度追加する必要があります。これを行ったとき、Novell の LDAP ライブラリを使用しました。機能させるには、DirectoryEntry をいじる必要があるかもしれません。

ADSI/System.DirectoryServices を介した eDirectory - LDAP からの読み取り不可能な属性の削除


eDirectory で使用しているパスワードの種類によっては、問題が発生する可能性があります。

LDAP / eDirectory 8.8 のユニバーサル パスワード


LDAP を使用して eDirectory またはユニバーサル パスワードを変更する方法 は、ldif サンプルです。

dn: cn=<myuser>,ou=<myou>,o=<myo>
changetype: modify
replace: userPassword
userPassword: <newPassWord>
于 2009-10-09T15:52:12.737 に答える