2017-10-30 3 views
0

個別にテストするとうまく動作しますが、データベースモジュールとLdapモジュールのどちらも正しく認証できません。認証login-modulesフラグは2つのモジュールでは機能しませんが、個別に動作します

私には何が欠けていますか?

standalone.xml

... 
<authentication> 
    <login-module code="LdapExtended" flag="sufficient"> 
     <module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/> 
     <module-option name="java.naming.provider.url" value="ldap://ldap.domain.net:389"/> 
     <module-option name="java.naming.security.authentication" value="simple"/> 
     <module-option name="baseCtxDN" value="dc=domain,dc=global"/> 
     <module-option name="baseFilter" value="(&amp;(uid={0})(memberOf=cn=rol,ou=Rols,ou=Groups,dc=rol,dc=global))"/> 
     <module-option name="rolesCtxDN" value="ou=Rols,ou=Groups,dc=rol,dc=global"/> 
     <module-option name="roleFilter" value="(member=uid={1},ou=Users,dc=rol,dc=global)"/> 
     <module-option name="roleAttributeID" value="cn"/> 
     <module-option name="roleAttributeIsDN" value="false"/> 
     <module-option name="searchScope" value="SUBTREE_SCOPE"/> 
     <module-option name="allowEmptyPasswords" value="true"/> 
    </login-module> 
    <login-module code="Database" flag="sufficient"> 
     <module-option name="dsJndiName" value="java:jboss/datasources/MySqlDS"/> 
     <module-option name="principalsQuery" value="SELECT password FROM t_user WHERE username = ?"/> 
     <module-option name="rolesQuery" value="SELECT none, 'Roles' FROM t_user WHERE username = ?"/> 
    </login-module> 
</authentication> 
... 

web.xmlの

... 
<login-config> 
    <auth-method>FORM</auth-method> 
    <realm-name>myrealm</realm-name> 
    <form-login-config> 
     <form-login-page>/login.xhtml</form-login-page> 
     <form-error-page>/login-error.xhtml</form-error-page> 
    </form-login-config> 
</login-config> 
... 

そしてj_usernameとj_passwordというと、デフォルトとしてのj_security_checkへの呼び出しフォーム。

+0

各モジュールでというプロパティをテストしましたが、それでも同じです。 – Joe

答えて

0

ロールクエリーに問題があったため、エラーが発生し、すべてのモジュールが機能しなくなりました。 クエリで値が返されない場合も同じエラーが発生します。

<module-option name="rolesQuery" value="SELECT none, 'Roles' FROM t_user WHERE username = ?"/> 

テーブルのフィールドではないため、アポストロフィ( '')の間に入力する必要はありません。

関連する問題