2017-10-30 3 views
0

개별적으로 제대로 작동하는지 테스트했지만, 함께 사용하면 데이터베이스 모듈이나 Ldap 모듈에서 제대로 인증 할 수 없습니다.authentication login-modules 플래그가 충분하지 않지만 두 모듈에서 작동하지만 개별적으로 작동합니다.

무엇이 누락 되었습니까?

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 = ?"/> 

아포스트로피 ('')는 표의 필드가 아니기 때문에 아무 것도 입력해야합니다.

관련 문제