JDBCレルム認証で権限管理

『Executeアノテーションでつけられるroles属性によって、ユーザのロールによってアクセス制御をかけることができる』ということは、
マニュアルを見れば一目瞭然なのですが、DBを使ってユーザー認証をした後にロールをどうやってセットすればよいのかが分かりませんでした。


調べた結果、自分でセットできるものではなく、サーブレットコンテナに任せた認証を使う必要があるとのこと。


しかし、今までのアプリの認証は全て自前でカスタムしたものばかりで、

サーブレットコンテナの認証って何?」
という状態だったので、チュートリアルの設定をみたり、ブログをあさってみたりと手探り状態で、
答えにたどり着くまでに随分時間がかかってしまいました。 orz


JDBCレルムを使った認証というのがあるんですね。全く知りませんでした。
[参照]http://www.jajakarta.org/tomcat/tomcat5.0/ja/docs/tomcat-docs/realm-howto.html


自分のようにその存在を知らない方のために、取っ掛かりにでもなればと思い、やった手順をざっくりですがメモしておきます。

      1. まずテーブルは「ユーザー表」「ユーザーロール表」の2つが必要です。「ユーザー表」にはログイン名とパスワード用の列、「ユーザーロール表」にはログイン名とロール名用の列が必要です。
      2. TOMCAT_HOME/conf/server.xmlJDBCレルムの設定を記述します。コメントアウトをはずし、データベースの情報、JDBCドライバ、認証に使うテーブルの情報などを設定します。デフォルトで有効となっていたの設定はコメントアウトします。
      3. TOMCAT_HOME/common/libにJDBCドライバのjarファイルを入れます。
      4. 続いてログイン画面とログインエラー時の画面を用意します。ログイン画面のformのactionは"j_security_check"、ログイン名・パスワードのinputタグのname属性はそれぞれ"j_username"、"j_password"とする必要があります。
      5. あとはweb.xmlに認証が必要なURLのパターンやログイン画面の場所などを設定するのですが、これはSAStrutsチュートリアルのweb.xmlを見たら分かると思います。タグやタグの設定です。


1〜3の話は上記のTomcatのページを見れば詳しく載っています。4、5もググれば参考になる情報はたくさんあります。


欲を言えば、この辺の認証まわりの話はマニュアルにもうちょっと書くか、参考URLへのリンクを貼っておいてもらいたかったなぁ(八つ当たり)。

常識過ぎて必要ないんですかね。