- PR -

BASIC認証をクリアしたい

投稿者投稿内容
田中
ベテラン
会議室デビュー日: 2002/05/08
投稿数: 54
投稿日時: 2005-05-19 00:12
引用:

普通はセッション維持の手段としてURLにセッションIDを埋め込むか、クッキーのどちらかを
使いますが、アプリケーションサーバがその手段を提供してくれますので、ログアウト処理は
HttpSession#invalidateを呼び出すだけです。



私が調べた範囲でも通常はそのようにするようです。
実際、サンプルもそうなっていました。
しかし、実際に動作させて見ると期待した動きにはならないので何かコツでもあるのか知りたいです。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-05-19 01:53
引用:

田中さんの書き込み (2005-05-19 00:12) より:
私が調べた範囲でも通常はそのようにするようです。
実際、サンプルもそうなっていました。
しかし、実際に動作させて見ると期待した動きにはならないので何かコツでもあるのか知りたいです。


これまでの書き込みをちゃんと読んでいますか?
そのような処理でログアウト処理ができるのは、クッキーやセッションIDなどでセッション管理
をしている場合です。その場合には、クッキーなどとセッションオブジェクトをアプリケーション
サーバが関連づけて管理しているため、セッションオブジェクトを破棄すれば送られてきた
クッキーが無効だとアプリケーションサーバが判断できるのです。

一方、BASIC認証の場合にはそのような関連付けはできないため、セッションオブジェクトを
破棄しても、ブラウザが認証情報を送ってくれば認証は有効だとしてレスポンスを返すことに
なります。最初に認証情報を持ったリクエストを受け取る場合と、「ログアウト」後にリクエストを
受け取る場合との区別がアプリケーションサーバにはできないのです。
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2005-05-19 09:18
引用:
IE4までは、401が帰ってきてもキャッシュの情報を渡していたようですが、IE5からは再度ログイン情報を入力させるように変更されているようです。


なるほど。IE5 からは動作が変更されているのですね。とても参考になりました。

引用:
あれ ? 既にログイン ( 認証情報をブラウザが記憶 ) している状態での話ですから、401で認証情報破棄にはなると思いますが。


認証情報をブラウザが記憶していても、サイト再訪問時の初回リクエスト(ブックマークからアクセスなど)には Authorization が付かなくないですか? それで、401 (認証してね!) を受けてから Authorization を付けて送るような気がします。さらに 401 (認証無効だよ!) を受けないといけないんじゃないかと。それで 2回 必要だと思いました。

それはともかく、正しいユーザー名、パスワードに対して再入力を促すために 401 を送るのは良い方法ではないですね。ブラウザの自動送信分だけでなく人間が入力した正しい情報も初回は(セッションオブジェクトができていないので)拒否されてしまいますからね。ブラウザ環境によっては毎回、2度入力しないとログインできないということになりかねません。
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2005-05-19 13:01
引用:

田中さんの書き込み (2005-05-18 18:07) より:
私が質問したいのはHTTPレベルのBASIC認証ではなく、TOMCATが標準で提供しているBASIC認証の機構についてです。



勘違いしておられるのかもしれませんが、今までの議論の中で

HTTPレベルのBASIC認証=TOMCATが標準で提供しているBASIC認証

という話の流れから、401を返す以外方法はない、となっているような気が
するのですが。。
つんけん
会議室デビュー日: 2003/12/18
投稿数: 5
お住まい・勤務地: 京都
投稿日時: 2005-05-19 13:02
Tomcatのドキュメントからは記述を見つけられなかったのですが、
Session無効化(HttpSession#invalidate)でログアウトできるのはFORM認証で、
BASIC認証ではプログラムからの明示的なログアウトはできないようです。
FORM認証にされてはいかがでしょうか。

情報源はこちら
http://www.cafesoft.com/products/cams/tomcat-security.html

スキルアップ/キャリアアップ(JOB@IT)