1

私はASP.NETMVCWebアプリを持っており、ActiveDirectoryMembershipProviderに対して検証することにより、ユーザーがドメインのユーザー名とパスワードでログインする必要があります。

ログイン時に、ValidateUser(username、password)を使用してユーザーの資格情報を検証し、フォームのauth cookieを設定して、今後のリクエストでユーザーがユーザー名とパスワードを再度入力するように求められないようにします。

FormsAuthentication.SetAuthCookie(m.Username, true);

これは問題ありませんが、ユーザーのドメインパスワードが変更されていないことを確認するために定期的にユーザーを再検証する必要があり、ユーザーが資格情報を再度入力する必要がないようにします。

これを行う1つの方法は、ユーザーのパスワードをプレーンテキストでセッションオブジェクトに保存するか、暗号化してから後で復号化することです。次に、もう一度ValidateUserを呼び出し、必要に応じてユーザーをログアウトします。

自分の認証をロールした他のWebアプリでは、ユーザーのパスワードのハッシュを保存し、それをデータベースに保存されているハッシュと比較するだけです。

ActiveDirectoryMembershipProviderには、それを可能にする単一のメソッドがないようです。

ここで行う論理的なことは何ですか?

4

1 に答える 1

1

答えは、User.IsApproved と User.LastPasswordChangedDate を定期的に (約 30 分ごとに) チェックして、ユーザーの資格情報がまだ有効であることを確認することです。

これを行うには、FormsAuthentication.SetAuthCookie を使用するのではなく、FormsAuthenticationTicket と Cookie を手動で作成する必要があります。

ユーザーを検証した日付を UserData に入れ、これを LastPasswordChangedDate と比較します。

私はこれを実装しましたが、完全に機能します。

詳細はこちら

Active Directory のパスワードが Cookie と異なるかどうかを確認する

于 2012-12-02T12:00:20.317 に答える