2011-06-27 5 views
5

ログインモジュールのフラグが(JBoss 5.1 EAPを使用して)JAASでどのように機能するかを試してみたいと思います。誰かが私のために明確にできることを望んでいる困惑している状況に遭遇しました。背景についてはJAAS LoginModuleフラグ

、私のログイン-config.xmlには、次のようになります。この場合

<authentication-policy> 
    <authentication> 
    <login-module code="...loginModule1" flag="sufficient"> 
     ... 
    </login-module> 
    <login-module code="...loginModule2" flag="optional"> 
     ... 
    </login-module> 
    <login-module code="...loginModule3" flag="optional"> 
     ... 
    </login-module> 
    </authentication> 
</authentication-policy> 

、loginModule1は、スタンドアロンのですが、loginModule2はloginModule3に依存します。私が持っている問題は、loginModule1が失敗し、loginModule2とloginModule3の両方が成功すれば、まだ失敗したログインを取得するということです。 loginModule1をオプションに変更すると、loginModule1が失敗し、2と3が成功すると、ログインに成功します。 JBossのセキュリティのドキュメント(http://docs.jboss.org/jbossas/admindevel326/html/ch8.chapter.html)から

sufficient: the LoginModule is not required to succeed. If it does succeed, 
control immediately returns to the application (authentication does not proceed 
down the LoginModule list). If it fails, authentication continues down the 
LoginModule list. 

私はときというこれに基づいて考えているだろう十分なフラグを持つLoginModuleは失敗しますが、次のLoginModuleが渡された場合、成功したログインが得られます。

+0

フェイルオーバー機能を使用するのではなく、2つの使用例を2つのセキュリティドメインに分割してしまいました。しかし、残念です。 – bwobbones

答えて

8

javax.security.auth.login.Configuration classのjavaドキュメントをチェックしてください。十分なもの、必要なもの、必要なもの、オプションのものに関するすべての情報があります。あなたの質問に関係するものは、この段落です。

すべての必須認証モジュールとRequisite LoginModuleが成功した場合にのみ、認証が成功します。十分なLoginModuleが設定され、成功した場合は、その十分なLoginModuleより前のRequiredおよびRequisite LoginModuleだけが成功して、認証全体が成功する必要があります。アプリケーションにRequiredまたはRequisite LoginModuleが設定されていない場合、少なくとも1つのSufficientまたはOptional LoginModuleが成功する必要があります。

これは、セットアップが正しいように見えるので、何かが正しく戻っていないため、すべてが失敗しています。たぶん、JBossは少し違ったことをするでしょう。

+0

そのおかげで、私はそのコメントを読んで、他の誰かがバグだと思っていることを知ってうれしいです。 – bwobbones

関連する問題