- PR -

Tomcatでフォーム認証

1
投稿者投稿内容
トリックスター
大ベテラン
会議室デビュー日: 2003/04/16
投稿数: 104
投稿日時: 2005-11-22 16:45
こちらの会議室でよかったのかわかりませんが、

Tomcatでフォーム認証をしたくて、いろいろ調べていました。

とりあえず、一番簡単な方法ということで、
・server.xmlのRealmの設定&tomcat-users.xml
・web.xmlのsecurity-constraint、login-configあたりの設定
を行い、
フォームで、
・j_usernameにユーザー名
・j_passwordにパスワード
を入力し、フォームのactionであるj_security_checkにPOSTする
ということはわかったのですが、
この、j_security_checkってのはいったい何なのでしょうか?

サンプルを実行しても、
----
The requested resource (/jsp-examples/security/protected/j_security_check) is not available.
----
って言われます。
設定不備でしょうか?
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-11-22 17:12
設定の不備と思われます。j_security_check はサーブレットコンテナがフォーム認証を行うために予約されているパスで、
Servlet SepcI2.3 で "J2EE.12.5.3.1 Login Form Notes" に規定されています。

[ メッセージ編集済み 編集者: インギ 編集日時 2005-11-22 17:14 ]
トリックスター
大ベテラン
会議室デビュー日: 2003/04/16
投稿数: 104
投稿日時: 2005-11-22 17:56
すいません、実はうまくいってました。

だいたい動きを理解しました。

1.認証成功前、<form-login-page>/login.jsp</form-login-page>へ遷移。
2.認証失敗時、<form-error-page>/error.jsp</form-error-page>へ遷移。
3.認証成功後、通常通り、そのURLのコンテンツを表示。
4.認証成功後、戻って再度ログインすると、「HTTPステータス 404」。

4の状態になっていたようです。
できれば、404にならず、再認証できるようにしたいですが。

ありがとうございました。
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2005-11-22 18:05
引用:

トリックスターさんの書き込み (2005-11-22 17:56) より:

4.認証成功後、戻って再度ログインすると、「HTTPステータス 404」。

4の状態になっていたようです。
できれば、404にならず、再認証できるようにしたいですが。


戻るというのは、ブラウザの戻るボタンで戻ったんですか?
クライアントに取り込まれたキャッシュを叩いても、ログインはできませんよ。
はしもと
大ベテラン
会議室デビュー日: 2003/02/05
投稿数: 182
投稿日時: 2005-11-23 19:13
引用:
トリックスターさんの書き込み (2005-11-22 17:56) より:

4.認証成功後、戻って再度ログインすると、「HTTPステータス 404」。



j_security_check へのリクエストが 404 という事でしょうか。

サーブレット仕様的にどうなのか解らないのですが、
Tomcat では認証済み状態での j_security_check へのリクエストは、
認証機構をスルーしてウェブアプリ側でハンドリング可能
だったと思います。

おそらく j_security_check を servlet-mapping していない
でしょうから 404 なのでしょう。

引用:
できれば、404にならず、再認証できるようにしたいですが。



上記説明により、Tomcat の認証機構に認証させるためには、
認証済み状態をクリアしなければなりません。

同じくサーブレット仕様的にどうなのか解りませんが、
Tomcat の認証情報はセッション・オブジェクトと結びついているので、
セッションを無効にすれば、j_security_check へのリクエストが
再び Tomcat の認証機構にてハンドリングされます。

ちなみに Tomcat 標準の admin アプリは、ログアウト処理で
HttpSession#invalidate() しています。
トリックスター
大ベテラン
会議室デビュー日: 2003/04/16
投稿数: 104
投稿日時: 2005-11-23 23:16
引用:

戻るというのは、ブラウザの戻るボタンで戻ったんですか?


そうです。戻るというのは「戻るボタン」です。

no-cacheにして、セッションを切ればいけるかな?
引用:

クライアントに取り込まれたキャッシュを叩いても、ログインはできませんよ。


やっぱりダメですかねぇ。

ちょっと、こちら↓を解決してから戻ってきます。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=26269&forum=12

いろいろご意見いただいている方、申し訳ございません。
トリックスター
大ベテラン
会議室デビュー日: 2003/04/16
投稿数: 104
投稿日時: 2005-11-30 19:02
<form-login-page>で指定したページで外部ファイルを使うことは
できないですか?
例えば、
コード:
<link rel="stylesheet" type="text/css" href="css/common.css" />
<title>Yemni English Club 管理サイト</title>
<script language="JavaScript" src="js/common.js">
<!--
//-->
</script>



ログインページでは、まだそのディレクトリにアクセスする
権限を得られていないから、外部ファイルを参照できないと
いうことですか?
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-12-01 10:30
security-constraints で保護設定されていないページであれば指定できます。
保護対象のページであればご認識の通り、ログインフォーム表示のタイミングではまだアクセス権がないので使えません。
1

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