本記事では、ユーザがロックアウト、初回パスワード変更が必要などのステータスにより、UserPrincipal.SetPassword, UserPrincipal.ChangePassword, PrincipalContext.ValidateCredentials の成否がどのようになるのかをまとめました結果を掲載します。
System.DirectoryServices.AccountManagement 名前空間のクラスを使用していますが、SetPassword, ChangePassword はDirectoryEntry.Invoke メソッドでSetPassword, ChangePassword を行うことと同じです。ValidateCredentials は 単純にユーザのアカウント、パスワードを使用して、ActiveDirectoryのバインドする ( DirectoryEntry オブジェクトを作成する) のと同じことです。
確認環境
- Windows Server 2003 AD環境
- .NET 3.5
1. ユーザ状態によるパスワード変更、検証の結果
正しいユーザアカウント、パスワードを入力する条件で、アカウントのステータスによる、ChangePassword, SetPassword, ValidateCredentials の成否を表にまとめます。
ユーザ状態 | SetPassword | ChangePassword | ValidateCredentials | 備考 |
ロックアウト | 成功(※) | 失敗 | 失敗 | ※ロックは解除されない |
初回パスワード変更が必要 | 成功 | 成功 | 失敗 | |
アカウントは無効 |
成功 | 成功 | 失敗 | |
パスワード期限切れ | 成功 | 成功 | 失敗 | |
ユーザはパスワードを変更できない | 成功 | 失敗 | 成功 | |
パスワードを無期限にする | 成功 | 成功 | 成功 |
SetPassword は管理者権限(サーバオペレータ権限でもOKだと思います)が必要です。ChangePassword は旧パスワードがあっていれば、管理者権限を持たなくともパスワードを変更できます。
2. まとめ
備忘録としてユーザのステータスによるパスワード変更、ユーザ検証結果をまとめました。
誤り指摘点などがありましたらご連絡ください。
さんのコメント: さんのコメント: