ASPクラシックサイトのログアウト機能
-
20-09-2019 - |
質問
クラシック ASP を使用し、Windows 認証 (つまり、制限されたフォルダーにはサーバー OS を介してアクセス許可が設定され、ユーザー名とパスワードは Active Directory に保存されます)?
何らかの違いがある場合、サーバーは IIS 5.0 を実行しています。ログアウトは少なくとも IE (6、7、8) と Firefox で機能する必要があります。
これは古くてかなり大規模なサイト (個別の ASP ページが何百もある) であるため、個々のページを変更するような解決策はまったく機能しないことに注意してください。(同じ理由と、基本的な礼儀正しさから、asp.net への変更は提案しないでください。)
これまでにわかったことは、401 応答コードを送信することを示唆しています。 かもしれない 一部のブラウザでは認証をクリアしてしまうことがありますが、(1) その方法がわかりません。(2) 単に動作する可能性があるだけではなく、実際に動作するものを望んでいます。また、Session オブジェクト (.Abandon など) をいじることは、認証が行われる場所ではないため、まったく無意味であることもわかっています。
解決
「ログアウト」という用語の使用は混乱を招きます。通常、ログイン/ログアウトを管理するのはサイトの権限であり、これは通常セッション オブジェクトを使用して行われますが、これはあなたが話していることではありません。
あなたが話している可能性があることは 2 つあると思います。
接続認証
まず、Windows 統合セキュリティによって行われるタイプの認証は接続レベルで実行されるという事実です。接続が認証されると、その接続 (HTTP/1.1 ではデフォルトでオープン状態に維持されます) は、それ以上認証ハンドシェイクを必要とせずに使用できます。
以下を含めることで、クライアントまたはサーバーに接続を閉じるように説得できる場合があります。 Connection: close
ヘッダーが応答に含まれていますが、実際には接続が閉じられるわけではありません。
さらに、クライアントは同時に 2 つ以上の認証済み接続を開くことができます。この場合、上記のアプローチではそのうちの 1 つだけが閉じられます。
ここでの結論は、セッションごとのレベルで認証された接続に関してできることはほとんどないということです。
資格情報のキャッシュ
IE は、IE セッションの間、特定のサイトへのネットワーク ログオンのためにユーザーが入力した資格情報をキャッシュします。したがって、既存の認証された接続を閉じることができたとしても、IE はキャッシュされた資格情報を再利用して、その後の認証ハンドシェイクをサイレントに完了します。これを行わないようにクライアントを設定することは可能かもしれませんが、それが使用できるとは思えません。
結論
(少なくともあなたが尋ねていると私が認識した質問) に対する答えは次のとおりです。いいえ、できません。