2012-04-22 7 views
0

私のWebアプリケーションでは、私はフォームベースのログインを使用しています。私は、login-config.xmlで設定されたテーブルのデータに加えて、別のデータベースに存在するユーザを検証する必要があるシナリオを持っています。j_security_check認証の後に別のWeb認証メカニズムを続けることはできますか?

だから、私はこの流れを考えていた:

ユーザーは、保護されたリソースにアクセスしようとする - >アクティブなセッション場合は、フォームにログインするためにリダイレクトされます - >ユーザーは自分の資格情報を入力 - >のj_security_checkログインごとに認証を行います-config.xml - >認証が成功した場合はうまくいって、そうでない場合はjspエラーページにリダイレクトします。ユーザーが他のDBに存在するかどうかを確認します(特定のActive Directoryに存在します)。資格情報)を作成し、成功した場合にセッションを作成する - >そうでない場合はエラーページにリダイレクト

太字で強調表示されている部分はまったく可能ですか?

私はいくつかの記事で、認証がj_security_checkに与えられたら、それを徹底的に吟味する方法がないと読んでいます。本当ですか?

他のデータベースからlogin-config.xmlで指定されたテーブルにユーザーを追加するか、login-config.xmlを変更する以外にも、この問題の解決策はありますか?

(私はJbossを使用しています)

ありがとうございました。

答えて

0

j_security_checkの後にユーザーがリダイレクトされるURLをキャッチするサーブレットフィルタを作成します。このフィルタでは、他のデータベースのユーザー資格情報を確認します。

チェックが成功した場合は、その事実を反映するセッションブール値に追加します。チェックに失敗した場合は、セッション(HttpSession.invalidate()メソッド)を削除し、ユーザーをエラーページにリダイレクトします。

おそらく、フィルタは承認を必要とするすべてのURLを捕捉するでしょう。フィルタでブール値のフラグがあるかどうかをチェックするので、データベースのチェックを何度も繰り返さないでください。

+0

@Piotr Kochanskiのお返事ありがとうございます。 私はおそらく解決策のベストではない代替を試みました。 私たちがしたことは次のとおりでした: j_security_checkは私のローカルデータベースに対してユーザーを検証しようとします。 ユーザは存在しないので、エラーページに進みます。エラーページをサーブレットに置き換えます。ここで、他のDBのユーザをチェックし、有効なユーザであればローカルDBにエントリを作成していますこれらの資格情報をj_security_checkに再度転送します。エントリが存在するので、ユーザはアクセスが許可されます。 – Sudhakar

関連する問題