SAStrutsでの認証方式をどうするか悩み中。
SAStrutsで、ちょっと凝った認証処理をやろうとしていて、どうしようか悩み中です。
オススメはJDBC認証らしいのですが、今回の要件だとちょっと厳しい感じ。
やりたいこと
- Formベース認証。
- Database上にUserとRoleを持ちたい(これはJDBCRealmでもできる。)
- 一定回数パスワードを間違えたら、一定期間アカウントをロックしたい。
- 認証エラーの際にはログを出力したい。
- roleによって、ログインしたあとの画面を変えたい。(これは認証したあとの話なのでどうとでもなる)
- JAAS認証の仕組みに乗せて、SAStrutsでのroleベースのアクセス制御を利用したい。
考えられる対応方法
- 独自に認証機構を作る
- Sessionにログイン情報入れたり、ログインしているか認証するチェックが面倒。
- SAStrutsのroleとかは、おそらく利用できない。
- TomcatのJAASRealmに対応したLoginModuleを実装する。
- 余計な処理はあきらめてJDBCRealmで済ませる。
別にSAStrutsに限った話じゃないんだけど、この手の認証系の処理をどう実装するかは毎回悩んでしまう。
JAASのLoginModuleを実装すること自体はそれほど大変では無いけど、作ったLoginModuleをコンテナに組み込む方法がコンテナ毎に異なっているので、何とかして欲しい。
ぶっちゃけ、warの中に入れてweb.xmlで定義できるようにして欲しい。
皆さんは、認証処理ってどうしてますか?ボスケテ。