4

現在、私たち (私自身と私の会社) には、asp.net mvc4 ページがあります。AD を介して認証するログオン ページを利用したいと考えています。1 つの要件は、試行が失敗した場合にユーザーに情報を返すことです。

必要な情報は次のようなものです。

  1. ユーザー/パスワードが無効です
  2. アカウントがロックされています
  3. パスワードの有効期限が切れました

これはなじみのない領域なので、どの .NET ライブラリが利用できるかわかりません。これまでのところ、 System.DirectoryServicesにしか遭遇していませんが、bool を超える結果が得られるとは思えません。

これは可能ですか?参考文献、提案、または例をいただければ幸いです。

4

2 に答える 2

4

PrincipalContext.ValidateCredentialsを使用して、最初に資格情報を検証できます。が返された場合falseは、静的なUserPrincipal.FindByIdentityを使用してユーザーを検索し、見つかった場合は、IsAccountLockedOut()を使用してアカウントがロックアウトされているかどうかを確認します。

パスワードの有効期限が切れているかどうかを確認するには、UserPrincipal を自分で拡張する必要があるかもしれません。直接のプロパティ/メソッドは表示されません。これを拡張して属性に直接アクセスし、userAccountControlビットが設定されているかどうかを確認できます0x800000。これは PasswordExpired です。userAccountControl 値の詳細については、こちらをご覧ください。

于 2012-09-28T15:41:49.560 に答える
0

このようなコードがあるとします

try
{  
  SearchResult result = searcher.FindOne();
}
catch(Exception e)
{
// now what?
}

例外では、LDAP 例外タイプを処理できます。これは、すべての LDAP エラーのリストです。

http://msdn.microsoft.com/en-us/library/aa746530(v=vs.85).aspx

ADSI エラー値に基づいて、発生しているエラーの種類を識別できます。

しかし、私によると、LDAP エラーは対処するのが非常に難しいため、無効な資格情報などの一般的なエラーをユーザーに 1 つ与える必要があります。

乾杯。!!

于 2012-09-28T13:41:42.633 に答える