2012-05-09 9 views
2

アカウントに「次のログイン時に変更する必要があります」が選択されていない場合は、パスワードを変更できます。
ただし、チェックボックスをオンにすると、ユーザーにアクセスしようとすると不正なパスワードエラーが発生します。ASP.NETでADの「ユーザーが変更する必要がある」パスワードを変更しようとしています

LogOnUser()は正しいエラーコードを返しますので、ユーザーはパスワードを変更する必要があります。
Joe Kaplanはhereと言っています(2004年に戻っています)。ユーザーにバインドしてパスワードを変更することはできません。

AccountManagement/PrincipalContextまたはDirectoryEntry/DirectorySearcherを使用するかどうかは同じ問題です。

答えて

2

私は最後のポジションでこれをプロジェクトで行いました。ユーザーに自分の資格情報でバインドしようとするのではなく、パスワードを変更する権利のみを持つADアカウントを設定します。

だから、あなたは、ユーザーが、自分のパスワードを変更するには、新しいパスワードを要求し、管理者としてユーザーをつかむ、および変更を行う必要があることを示すエラーコードを持っていたら。

今思い出すと、私たちはかなりのコードが下で実行された資格情報に頼るよりも、それを動作させるために、明示的に管理者のユーザー名とパスワードを渡す必要がありました。

はセキュリティのために、我々は、レジストリ内の限られた管理者のユーザー名とパスワードの暗号化されたコピーを保存し、そして私たちはコールを作っていたときにそれを復号化されました。ここで同じことを実装

 PrincipalContext dc = new PrincipalContext(ContextType.Domain, 
      "www.yourdomain.com", "dc=yourdomain,dc=com", 
      ContextOptions.SimpleBind, "AdminUserName", "AdminPassword"); 
     UserPrincipal usr = UserPrincipal.FindByIdentity(dc, 
      "UserWhoNeedsPasswordChanged"); 
     usr.ChangePassword("oldPass", "newPass"); 
+0

コードは次のようなものになります。解決策と自家製のものを非常によく似たものを研究し、調査しました。 – zeroef

+0

管理者の資格情報はどのように使用しましたか?偽装しましたか、または資格情報を渡してパスワードを設定するための呼び出しがありますか? – eych

+0

PrincipalContextオブジェクトのコンストラクタには、ユーザー名とパスワードを含むオーバーロードが必要です。 – KennyZ

関連する問題