java - JBoss7 : LDAP connectivity issue

标签 java ldap jboss7.x

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

standalone.xml 中的安全域 - 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 中的安全域 - 生产 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>

服务器日志

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]

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

任何人都可以告诉我为什么会发生这种情况或者有人遇到类似的问题。感谢您的帮助。

最佳答案

bindDNbindCredential 属性是 LdapExtLoginModule 的一部分类,最初我们只扩展 LdapLoginModule类(class)。后来我们还扩展了 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"/>

关于java - JBoss7 : LDAP connectivity issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28580148/

相关文章:

java - 如何使用Java反射设置接口(interface)字段

java - 使用 log4j 显示响应的堆内存问题

jsp形式的Java UTF-8编码

java - LDAP 搜索中的 NPE

java - JBoss7 : loader constraint violation with ReastEasy and httpclient with custom HttpRequestInterceptor

tomcat - Spring Security Session Atmosphere 无效

java - 从数组中找到最多包含两个连续元素的最大和

java - Android 中的倒计时问题

kubernetes - 无法从 Ldapmain 对您进行身份验证,因为 "Invalid credentials for <username>"- 通过 Helm Chart 安装的 Gitlab 社区版

windows - 使用 VBScript 从 Active Directory (LDAP) 检索所有用户