( ꒪⌓꒪) ゆるよろ日記

( ゚∀゚)o彡°オパーイ!オパーイ! ( ;゚皿゚)ノシΣ フィンギィィーーッ!!!

SAStrutsでの認証方式をどうするか悩み中。

SAStrutsで、ちょっと凝った認証処理をやろうとしていて、どうしようか悩み中です。
オススメはJDBC認証らしいのですが、今回の要件だとちょっと厳しい感じ。


やりたいこと

  • Formベース認証。
  • Database上にUserとRoleを持ちたい(これはJDBCRealmでもできる。)
  • 一定回数パスワードを間違えたら、一定期間アカウントをロックしたい。
  • 認証エラーの際にはログを出力したい。
  • roleによって、ログインしたあとの画面を変えたい。(これは認証したあとの話なのでどうとでもなる)
  • JAAS認証の仕組みに乗せて、SAStrutsでのroleベースのアクセス制御を利用したい。


考えられる対応方法

  • 独自に認証機構を作る
    • Sessionにログイン情報入れたり、ログインしているか認証するチェックが面倒。
    • SAStrutsのroleとかは、おそらく利用できない。
  • TomcatのJAASRealmに対応したLoginModuleを実装する。
    • LoginModuleだけ別にjarにしてTomcatのクラスパスに入れなきゃならん。
    • コンテナがTomcatに依存する。
    • S2Containerが使えない。DBの接続などの設定は自前。
  • 余計な処理はあきらめてJDBCRealmで済ませる。


別にSAStrutsに限った話じゃないんだけど、この手の認証系の処理をどう実装するかは毎回悩んでしまう。


JAASのLoginModuleを実装すること自体はそれほど大変では無いけど、作ったLoginModuleをコンテナに組み込む方法がコンテナ毎に異なっているので、何とかして欲しい。
ぶっちゃけ、warの中に入れてweb.xmlで定義できるようにして欲しい。


皆さんは、認証処理ってどうしてますか?ボスケテ