1

Web アプリで ActiveDirectoryMembershipProvider を使用しています。そのようにドメイン資格情報でユーザーを認証します

if (Membership.ValidateUser(m.Username, m.Password))
    FormsAuthentication.SetAuthCookie(m.Username, true);

これはうまくいきます。

しかし、ユーザーのパスワードが Active Directory で変更された場合でも、ユーザーは Web アプリにログインしたままになりますか?

ドメイン パスワードが変更された場合、またはアカウントが無効になった場合などに、ユーザーが Web アプリにログインしたままにならないようにするにはどうすればよいですか?

4

2 に答える 2

1

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

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

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

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

詳細はこちら

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

于 2013-01-03T01:00:51.050 に答える
0

100%確実ではありませんが、パスワードの変更やアカウントの有効期限が切れても、ユーザーの認証チケットが引き続き機能することに不満を感じているようです。

ユーザーがログインして認証チケット (Cookie) を取得すると、チケットの有効期限が切れる (web.config ファイルで設定される) まで、ユーザーは再度認証を要求されません。この問題に対処するための 2 つの提案を次に示します。

  1. 認証チケット (Cookie) の有効期限が切れるのを待ちます。次回のログイン時に、ユーザーは新しいパスワードを使用する必要があります。このソリューションのバリエーションには、ブラウザが閉じられたときにユーザーが常にログインする必要があるように、セッションのみの Cookie を使用することが含まれます (AD 認証に推奨)。
  2. 最近更新されたユーザーのリストを探し、HTTP パイプラインの早い段階で認証チケットを検査する Http モジュールを作成します。認証チケットが届き、更新されたユーザーのリストと一致する場合、ユーザーの Cookie を期限切れにして、ログイン ページにリダイレクトします。始めるのに役立つ同様の質問を次に示します。

    Web サイトですべてのユーザーを強制的にログアウトするにはどうすればよいですか

于 2012-12-07T02:34:22.873 に答える