10

SSL セッションでクライアント証明書を使用してユーザーを認証していますが、キャッシュされたセッションに少し問題があります。(クライアント証明書を要求するのではなく受け入れるように IIS を構成しました。)

通常の状況:
ユーザーが証明書を要求するページにアクセスします。ブラウザーが証明書セレクターを起動し、ユーザーが目的の証明書を選択し (必要に応じて PIN を入力)、すべてが正常に進行します。

期待どおりに動作しない状況:
ユーザーが、証明書を要求するページにアクセスします。ブラウザーは証明書セレクターを起動し、ユーザーは目的の証明書を選択しますが、PIN ダイアログでキャンセルします。証明書が送信されなかったため、ユーザーは前のページにリダイレクトされます。ユーザーは再度ログインを試みますが、最後の SSL セッションがキャッシュされているため、自動的に失敗します。

を使用してIEでこれを解決しましたdocument.execCommand("ClearAuthenticationCache");が、メソッドをサポートしていないため、FFまたはChromeではまだ機能しません。これを解決する方法はありますか?

4

3 に答える 3

6

このディスカッションこの Chromium issueに興味があるかもしれません。特に、次のことを試してください。

if (window.crypto) window.crypto.logout();
于 2012-03-15T17:07:33.810 に答える
4

Chrome (少なくとも 19.0.1084.30 ベータ版) の場合、クライアント証明書を必要とするがすべての証明書を拒否する同じホスト名に URL を設定できる場合、その URL にリクエストを行うと、window.crypto.logout(). たとえば/ssl_logout/、特別に構成された URL の場合:

var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function () {
    // put any actions to carry out upon logout here
};
xmlHttp.open( "GET", "/ssl_logout/", true );
xmlHttp.send();

iframe(またはimgを含むページを使用することsrc="/ssl_logout/"もできます。)

于 2012-04-23T02:07:37.587 に答える
1

IE6+ の場合:

document.execCommand('ClearAuthenticationCache');
于 2013-05-09T10:14:46.107 に答える