Authentication 针对LDAP对JBoss 7上的用户进行身份验证的问题
我正在尝试针对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中的配置: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和密码进行的登录尝试。 -最后一个查询获取组对象。 虽然使用了密码,但您不必在登录模块中引用它。现在让我们看
<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执行此操作。最终的模块选项有助于工作-