私はユーザーがHTTPS経由でクライアント証明書を使用して認証するASP.NETアプリケーションを開発しています。ユーザーはIE7のみを使用しています。ユーザーのセッションの有効期限が切れたときにブラウザのSSL状態をクリアするにはどうすればよいですか?
クライアント証明書の認証に成功すると、プロセスが終了するか、ユーザーが手動でSSLキャッシュをクリアするまでブラウザのSSLキャッシュに残ります。ユーザーがログアウトするたびに、またはセッションが期限切れになるたびにSSLキャッシュをクリアして、システムのセキュリティを向上させたいと考えています。
クライアントは既にスマートカードを使用してシステムにアクセスしています。このシステムは、カードがクライアントコンピュータから削除されたときに証明書を自動的にアンロードしますが、ブラウザキャッシュをまったくクリアしません。純正のユーザーと同じマシンにアクセスできます。私はJavaScriptから実際のキャッシュのクリア行う方法を見つけた
:
document.execCommand( "ClearAuthenticationCacheを");
ユーザーが明示的にログアウトすると完全に機能します。これは、ユーザーが再度ログインできるようにする前にクライアントでスクリプトを実行できるためです。
注:IE7では、Webサーバー上でHTTPキープアライブが無効になっている場合にのみ、プログラムでキャッシュをクリアできます。
これはちょっと難しいことです。クライアントのセッションの有効期限が切れると、ユーザーが再度ログインしようとする前にブラウザでこれを処理する方法がわかりません。ステータスがクリアされ、ページがサーバー上で実行される前に選択された新しい証明書が必要なため、ログインページにアクセスしたときに状態をクリアできません。
アイデア?問題の長さに対する謝罪ですが、背景は重要です。
明示的に「ログアウト」するにはどうすればよいですか?これがクライアント側の "ClearAuthenticationCache"へのJS呼び出しである場合、PowerUserはその呼び出しを回避できます(クライアント側のコードをハックする)。 –
Laurentの質問にバンプ –
通常のFormsAuthentication.SignOut()メソッドだけがサーバーにログアウトされます。クライアントの操作はありません。 – Sam