JBoss7:LDAP连接问题

时间:2015-02-18 09:35:01

标签: java ldap jboss7.x

我有一个部署在Jboss7中的Web应用程序。除了一件事,一切都很好。我们有两个不同的AD / LDAP服务器,一个用于UAT,另一个用于生产用户。 UAT AD / LDAP用户可以登录,但生产AD / LDAP用户无法登录。

standalone.xml中的security-domain - UAT LDAP配置

<security-domain name="other" cache-type="default">
<authentication>
    <login-module code="org.jboss.security.auth.spi.LdapLoginModule" flag="optional">
        <module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
        <module-option name="java.naming.provider.url" value="ldap://XXX.XXX.XX.XX:389/"/>
        <module-option name="java.naming.security.authentication" value="simple"/>
        <module-option name="password-stacking" value="useFirstPass"/>
        <module-option name="principalDNPrefix" value="CN="/>
        <module-option name="principalDNSuffix" value=",CN=Users,DC=CISLAB,DC=TP,DC=EDU,DC=IN"/>
        <module-option name="rolesCtxDN" value="CN=Users,DC=CISLAB,DC=TP,DC=EDU,DC=IN"/>
        <module-option name="uidAttributeID" value="member"/>
        <module-option name="matchOnUserDN" value="false"/>
        <module-option name="roleAttributeID" value="cn"/>
        <module-option name="roleAttributeIsDN" value="false"/>
    </login-module>
</authentication>

standalone.xml中的security-domain - 生产LDAP配置

<security-domain name="other" cache-type="default">
<authentication>        
    <login-module code="org.jboss.security.auth.spi.LdapLoginModule" flag="optional">
        <module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
        <module-option name="java.naming.provider.url" value="ldap://XXX.XXX.XX.XX:389/"/>
        <module-option name="java.naming.security.authentication" value="simple"/>
        <module-option name="password-stacking" value="useFirstPass"/>
        <module-option name="bindDN" value="CN=ESA AD Account,OU=Special Accounts,DC=TP,DC=EDU,DC=IN"/>
        <module-option name="bindCredential" value="XXX"/>
        <module-option name="baseCtxDN" value="CN=Users,DC=TP,DC=EDU,DC=IN"/>
        <module-option name="baseFilter" value="(sAMAccountName={0})"/>
        <module-option name="rolesCtxDN" value="CN=Users,DC=TP,DC=EDU,DC=IN"/>
        <module-option name="roleFilter" value="(sAMAccountName={0})"/>
        <module-option name="roleAttributeID" value="sAMAccountName"/>
        <module-option name="roleAttributeIsDN" value="false"/>
        <module-option name="defaultRole" value="user"/>
        <module-option name="roleNameAttributeID" value="CN"/>
        <module-option name="allowEmptyPasswords" value="false"/>
    </login-module>
</authentication>

的server.log

12:11:07,002 ERROR [org.jboss.security.authentication.JBossCachedAuthenticationManager] (https_executor-threads - 2) Login failure: javax.security.auth.login.FailedLoginException: Password Incorrect/Password Required
at org.jboss.security.auth.spi.UsernamePasswordLoginModule.login(UsernamePasswordLoginModule.java:270) [picketbox-4.0.7.Final.jar:4.0.7.Final]

一切都是一样的,如果我使用Production LDAP服务器修改standalone.xml,那么用户将无法登录该应用程序。

有谁能请让我知道为什么会这样或任何人遇到类似的问题。谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

bindDN&amp; bindCredential属性是LdapExtLoginModule类的一部分,最初我们只扩展了LdapLoginModule类。后来我们也扩展了LdapExtLoginModule课程。最后问题已经解决了。

    <module-option name="bindDN" value="CN=ESA AD Account,OU=Special Accounts,DC=TP,DC=EDU,DC=IN"/>
    <module-option name="bindCredential" value="XXX"/>