2

私は、ユーザーが HTTPS 経由でクライアント証明書を使用して認証する ASP.NET アプリケーションに取り組んでいます。ユーザーは IE7 のみを使用しています。

クライアント証明書を使用して正常に認証されると、プロセスが閉じられるか、ユーザーが手動で SSL キャッシュをクリアするまで、ブラウザーの SSL キャッシュに残ります。システムのセキュリティを向上させるために、ユーザーがログアウトするかセッションが期限切れになるたびに SSL キャッシュをクリアできるようにしたいと考えています。

クライアントはすでにスマートカードを使用してシステムにアクセスしており、カードがクライアント コンピューターから取り外されると自動的に証明書がアンロードされますが、これはブラウザーのキャッシュをまったくクリアしないため、同じアクセス権を持つ別のユーザーから攻撃を受ける可能性があります。真のユーザーとしてマシン。

JavaScript から実際のキャッシュをクリアする方法を見つけました。

document.execCommand("ClearAuthenticationCache");

これは、ユーザーが明示的にログアウトした場合に完全に機能します。これは、ユーザーが再度ログインできるようにする前にクライアントでスクリプトを実行できるためです。

注: IE7 では、Web サーバーで HTTP キープアライブが無効になっている場合にのみ、キャッシュをプログラムでクリアできます。

ここで注意が必要な点があります。クライアントのセッションが期限切れになった場合、ユーザーが再度ログインを試みる前にブラウザーでこれを処理する方法がわかりません。サーバーでページが実行される前に、状態をクリアし、新しい証明書を選択する必要があるため、ログインページに到達したときに状態をクリアできません。

何か案は?質問が長くなって申し訳ありませんが、これには背景が重要です。

4

1 に答える 1

2

気にしないでください、私は良い解決策を思いつきました:

  • ユーザーが正常にログインすると、ブラウザを閉じるまで有効期限が切れない追加のセッションCookieを作成します。

  • ユーザーが後でログインページに戻ってリクエストが認証されていない場合、セッションCookieの存在を確認します。存在する場合は、ユーザーが以前にセッションを行ったことがあることがわかっているため、明示的にログアウトします。ユーザーが開始したログアウトに対して行います。セッションCookieが存在しない場合は、証明書を使用してユーザーを自動的にログインさせようとします。

  • カスタムセッションCookieは、明示的なログアウトごとに削除され、ログインが成功するたびに再入力されます。

これにより、ユーザーに最高のエクスペリエンスが提供され、セッションがまだ有効である間(15分、スライド)のみ証明書がキ​​ャッシュされることが保証されます。また、セッションCookieはユーザーが削除できないため、この動作を回避する方法はありません。また、セッションCookieを受け入れずにサイトを使用することもできません。

于 2009-03-18T23:24:53.823 に答える