Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Authentication 针对LDAP对JBoss 7上的用户进行身份验证的问题_Authentication_Ldap_Jboss7.x - Fatal编程技术网

Authentication 针对LDAP对JBoss 7上的用户进行身份验证的问题

Authentication 针对LDAP对JBoss 7上的用户进行身份验证的问题,authentication,ldap,jboss7.x,Authentication,Ldap,Jboss7.x,我正在尝试针对LDAP服务器在JBoss7上的应用程序上设置身份验证。下面是我为配置所遵循的链接 LDAP登录模块对LDAP服务器执行三个查询以登录用户,如下所示: 根据JBoss in Action,JBoss LDAP登录模块的工作原理有3个步骤: -第一个查询仅使用登录id查找用户对象。此搜索类似于我们之前向您显示的第一个ldapsearch查询。 -第二个查询是使用用户的登录id和密码进行的登录尝试。 -最后一个查询获取组对象。 虽然使用了密码,但您不必在登录模块中引用它。现在让我们看

我正在尝试针对LDAP服务器在JBoss7上的应用程序上设置身份验证。下面是我为配置所遵循的链接

LDAP登录模块对LDAP服务器执行三个查询以登录用户,如下所示:

根据JBoss in Action,JBoss LDAP登录模块的工作原理有3个步骤: -第一个查询仅使用登录id查找用户对象。此搜索类似于我们之前向您显示的第一个ldapsearch查询。 -第二个查询是使用用户的登录id和密码进行的登录尝试。 -最后一个查询获取组对象。 虽然使用了密码,但您不必在登录模块中引用它。现在让我们看看另一个登录模块,它有助于简化开发和测试

查看LDAP服务器日志,我的安装程序似乎只执行了第一步,而不是第二步。因此,登录失败并出现密码错误:

10:47:11448调试[org.jboss.security](http-/127.0.0.1:9080-1)PBOX000283:用户名testuser1的密码错误 10:47:11450跟踪[org.jboss.security](http-/127.0.0.1:9080-1)PBOX000244:开始中止方法 10:47:11450调试[org.jboss.security](http-/127.0.0.1:9080-1)PBOX000206:登录失败:javax.security.auth.Login.failedLogin异常:PBOX000070:密码无效/需要密码 在org.jboss.security.auth.spi.UsernamePasswordLoginModule.login(UsernamePasswordLoginModule.java:286)[picketbox-4.1.1.Final-redhat-1.jar:4.1.1.Final-redhat-1]

以下是my standalone.xml中的配置:

            <security-domain name="LDAPAuth" cache-type="default">
                <authentication>
                    <login-module code="org.jboss.security.auth.spi.LdapExtLoginModule" flag="required">
                        <module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
                        <module-option name="java.naming.provider.url" value="ldap://localhost:389"/>
                        <module-option name="java.naming.security.authentication" value="simple"/>
                        <module-option name="bindDN" value="cn=admin"/>
                        <module-option name="bindCredential" value="********"/>
                        <module-option name="baseCtxDN" value="ou=Internal,cn=Users,dc=company,dc=local"/>
                        <module-option name="baseFilter" value="(cn={0})"/>
                        <module-option name="roleFilter" value="(uniqumember={1})"/>
                        <module-option name="allowEmptyPasswords" value="false"/>
                        <module-option name="Context.REFERRAL" value="follow"/>
                        <module-option name="throwValidateError" value="true"/>
                        <module-option name="roleRecursion" value="0"/>
                        <module-option name="searchScope" value="SUBTREE_SCOPE"/>
                        <module-option name="password-stacking" value="useFirstPass"/>
                        <module-option name="Context.REFERRAL" value="follow"/>
                        <module-option name="throwValidateError" value="true"/>
                    </login-module>
                </authentication>
            </security-domain>


通常,Microsoft Active Directory中的登录名与cn不同。可能会尝试将CN={0}更改为samAccountName={0}。我们已经针对两个LDAP实现进行了测试—OpenLDAP和Oracle Internet Directory。我们可以独立地从命令行绑定CN。您能提供您正在使用的命令吗?我们只是尝试使用基本身份验证。在我添加了一个模块选项之后,我看到LDAP已成功发送UserBind请求,因此LDAP正在对用户进行身份验证,但JBoss仍会抛出与以前相同的错误。请设法使用Oracle Internet Directory执行此操作。最终的模块选项有助于工作-