トップ回答者
IE11のダイジェスト認証でログアウト(認証ダイアログでキャンセルボタンを押したことを検知する方法)

質問
回答
-
HTTP 401 は
https://tools.ietf.org/html/rfc7235#section-3.1
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
で仕様化されてますが、それを見る限り 401 で refuse された資格情報をキャッシュし続けるのは微妙に適切でない感じですね。401 で refuse されたら
"The user agent MAY repeat the request with a new or replaced Authorization header field "
って書いてあります。
hebikuzure
- 回答としてマーク matukasa 2017年4月25日 0:50
-
よく理解できていないのかもしれませんが
- ユーザーがダイジェスト認証でサインインする
- サーバー側の何らかの理由でサインアウトさせたい
- HTTP 401 でレスポンスを返す
- ブラウザーで HTTP 401 を受けて認証ダイアログを出す
- ユーザーがダイアログでキャンセルを選択する
というシナリオでしょうか?
chrome では 401 が返ってきた時点でキャッシュしていたクレデンシャルを破棄するが、IE では破棄せず認証ダイアログで新しい資格情報が入力されれば置き換え、キャンセルしたらキャッシュしていたクレデンシャルを引き続き使う、という動作のように見える動きですね。
どちらの動作が(HTTP の仕様的に)正しいのか分かりませんが(というか調べてませんが)、もしそういう動作であれば、「この方法はIEには使用できないということですね」は Yes ということでしょう。hebikuzure
- 回答の候補に設定 立花楓Microsoft employee, Moderator 2017年4月11日 0:45
- 回答としてマーク matukasa 2017年4月13日 4:20
すべての返信
-
Basic認証やDigest認証にはログアウトの概念がありません。ブラウザーが認証方法を送るか否かでしかありません。
- 回答の候補に設定 立花楓Microsoft employee, Moderator 2017年4月11日 0:45
-
よく理解できていないのかもしれませんが
- ユーザーがダイジェスト認証でサインインする
- サーバー側の何らかの理由でサインアウトさせたい
- HTTP 401 でレスポンスを返す
- ブラウザーで HTTP 401 を受けて認証ダイアログを出す
- ユーザーがダイアログでキャンセルを選択する
というシナリオでしょうか?
chrome では 401 が返ってきた時点でキャッシュしていたクレデンシャルを破棄するが、IE では破棄せず認証ダイアログで新しい資格情報が入力されれば置き換え、キャンセルしたらキャッシュしていたクレデンシャルを引き続き使う、という動作のように見える動きですね。
どちらの動作が(HTTP の仕様的に)正しいのか分かりませんが(というか調べてませんが)、もしそういう動作であれば、「この方法はIEには使用できないということですね」は Yes ということでしょう。hebikuzure
- 回答の候補に設定 立花楓Microsoft employee, Moderator 2017年4月11日 0:45
- 回答としてマーク matukasa 2017年4月13日 4:20
-
HTTP 401 は
https://tools.ietf.org/html/rfc7235#section-3.1
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
で仕様化されてますが、それを見る限り 401 で refuse された資格情報をキャッシュし続けるのは微妙に適切でない感じですね。401 で refuse されたら
"The user agent MAY repeat the request with a new or replaced Authorization header field "
って書いてあります。
hebikuzure
- 回答としてマーク matukasa 2017年4月25日 0:50