- - PR -
BASIC認証をクリアしたい
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-05-18 17:46
IE4までは、401が帰ってきてもキャッシュの情報を渡していたようですが、IE5からは再度 ログイン情報を入力させるように変更されているようです。 http://support.microsoft.com/default.aspx?scid=kb;ja;413854 どちらにしても確認は必要だと思いますし、ブラウザ依存の動作を前提とするのは好ましい ことではないと思います。 | ||||||||
|
投稿日時: 2005-05-18 17:47
あれ ? 既にログイン ( 認証情報をブラウザが記憶 ) している状態での話ですから、401で認証情報破棄にはなると思いますが。 ※ Authorization を含んだリクエストに対して、401を返すという話。 扱いとしては、パスワード入力間違いで 401が来る ( 結果パスワード再入力 ) のと同じかと。 ちなみに、401の説明(RFC2616 10.4.2訳)によると、
とありますし。 追加: 先に ukさんが IE の例を挙げられてましたね。 MicroSoft の説明を見る限りだと、「一回通った認証はずっと有効でないとイヤ」だけど、そうでないサイトがあるので、401が来たら認証情報を破棄するように修正した…と読めますね。 認証を弄ぶのは危険ですかね ? そこらへんの根拠が今一はっきり分かりません。 [ メッセージ編集済み 編集者: angel 編集日時 2005-05-18 17:56 ] | ||||||||
|
投稿日時: 2005-05-18 18:07
タイトルがいけないのだと思いますがどうも話の方向が違うように思います。
私が質問したいのはHTTPレベルのBASIC認証ではなく、TOMCATが標準で提供しているBASIC認証の機構についてです。 当然、TOMCATも最終的にはRFCに準拠した実装となっていることはわかりますが、今、問題にしているのはそのことではありません。 ある程度の決着をみたら話を戻していただけるとありがたいのですが。 一応、BASIC認証のために私が取った手段を書いておきます。 1.web.xmlで保護されるリソースとアクセスできるロールを指定する。 2.JDBCRealmの設定でユーザテーブル、ロールテーブル(OracleDB)の指定をする。 3.struts-config.xmlの<action-mappings>で保護したいリソースのパスを上記1で指定したパスにする。 以上のことをすれば保護したいリソースにアクセスする時にTOMCATが勝手にBASIC認証をしてくれますが、認証後にそれを破棄する(再度ログインダイアログが出るようにしたい)方法が知りたかったのです。 | ||||||||
|
投稿日時: 2005-05-18 18:11
がるです。
えっと…ちっと書くかどうか迷ったのですが。 正直なところ "ログアウトが必要であるような要件でBasic認証をチョイスしてはいけない" と思うです。 # 「毎回」「平文で」パスワードが流れる認証ってどうなんでしょ? いあ。大前提を根底から覆すような発言なので書こうかどうか悩んだのですが。 せっかくのJavaですし(この場合は「大量にさまざまなクラスを所持している」 の意)。 通常の、Basic認証ではないもうちょっと「まっとうな」認証方式を いろいろと調べたほうがよいように思うのですがどうでしょうか? もしこの発言を蛇足、あるいはジャンクであると感じられるようであれば、 このような(前提を覆す)発言をしたことをお詫びいたします。 | ||||||||
|
投稿日時: 2005-05-18 18:27
たしかに・・・ 勉強をStrutsの勉強を始めたばかりで本のサンプルを元に動けば良いという考えで開発してましたがセキュリティ上は危険ですね。 たまたまサンプルがBASIC認証だったのでそのまま使っています また、そもそも認証をさせる目的が他にあります。 ということで、BASIC認証の選択の是非はこの際問わないで下さい。 ※BASIC認証が危険なことを忘れていました。 今回の指摘がなければ重要な局面でも使っていたかも知れないので感謝します。 | ||||||||
|
投稿日時: 2005-05-18 18:53
えーと、だから401を返すように実装しろ、という流れになっているのですが… コードを書かずに実現したいということですか? | ||||||||
|
投稿日時: 2005-05-18 21:28
今までの皆さんの書き込みを読みますと、これにつきると思います。 ログアウトにこだわりたいなら、やり方を変えた方がいいでしょうね。 ログイン時にセッションにアカウント名か何かを埋め込み、ログアウト時にその何かを消すというのが一般的? #それでもブラウザで別ウィンドウを表示させたときとかの動作がブラウザによって違うという話を聞いた事があるけど。 | ||||||||
|
投稿日時: 2005-05-18 21:58
普通はセッション維持の手段としてURLにセッションIDを埋め込むか、クッキーのどちらかを 使いますが、アプリケーションサーバがその手段を提供してくれますので、ログアウト処理は HttpSession#invalidateを呼び出すだけです。 | ||||||||
