Spring ActiveDirectoryLdapAuthenticationProvider handleBindException - 提供的密码无效错误

时间:2014-01-11 23:48:04

标签: spring-security active-directory passwords spring-ldap

我们正在尝试使用Spring安全性来验证我们的企业LDAP。我正在使用ActiveDirectoryLdapAuthenticationProvider。下面是Spring配置文件的片段:

<security:authentication-manager erase-credentials="true">
    <security:authentication-provider  ref="ldapActiveDirectoryAuthProvider"/>
</security:authentication-manager>

<bean id="ldapActiveDirectoryAuthProvider" class="org.springframework.security.ldap.authentication.ad.ActiveDirectoryLdapAuthenticationProvider">
<constructor-arg value="DC=xxx,DC=ds,DC=yyy,DC=com" />  
<constructor-arg value="ldap://xxx.ds.yyy.com:389" />
<property name="convertSubErrorCodesToExceptions" value="true"/>
</bean>

我收到: ActiveDirectoryLdapAuthenticationProvider handleBindException Active Directory身份验证失败:提供的密码无效错误。

我的理解是,这是因为LDAP绑定失败,因为它正在寻找userDN /凭证。我们如何在配置文件中指定此信息?

在使用ActiveDirectoryLdapAuthenticationProvider之前,我使用<ldap-authentication-provider>DefaultSpringSecurityContextSource进行了此操作。我可以在配置DefaultSpringSecurityContextSource bean时指定userDN /密码。有人可以告诉我如何使用ActiveDirectoryLdapAuthenticationProvider配置用户ID和密码吗?

1 个答案:

答案 0 :(得分:7)

看起来你可能会对ActiveDirectoryLdapAuthenticationProvider做什么和how to configure it感到有些困惑。它使用user@domain.com形式的类似电子邮件的名称进行绑定,其中domain.com是您在第一个构造函数中提供的参数。它不使用标准LDAP DN。这特定于Active Directory,而不是标准LDAP的一部分。 您可能还想查看该课程的the source和Javadoc。

如果您已经有一个标准的LDAP身份验证配置使用您的设置,那么您不清楚为什么要更改。你可能最好坚持使用你拥有的东西,因为它不会与ActiveDirectoryLdapAuthenticationProvider直接兼容。