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

Spring security Spring ActiveDirectoryLdapAuthenticationProvider HandleBindeException-提供的密码无效错误,spring-security,active-directory,passwords,spring-ldap,Spring Security,Active Directory,Passwords,Spring Ldap,我们正在尝试使用Spring安全性对我们的企业LDAP进行身份验证。我正在使用ActiveDirectoryLdapAuthenticationProvider。下面是Spring配置文件的代码段: <security:authentication-manager erase-credentials="true"> <security:authentication-provider ref="ldapActiveDirectoryAuthProvider"/>

我们正在尝试使用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 HandleBindeException Active Directory身份验证失败:提供的密码无效错误

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


在使用
ActiveDirectoryLdapAuthenticationProvider
之前,我使用
DefaultSpringSecurityContextSource
完成了这项工作。在配置
DefaultSpringSecurityContextSource
bean时,我能够指定userDN/密码。有人能告诉我如何在使用
ActiveDirectoryLdapAuthenticationProvider
进行配置时指定userDn和密码吗?

您可能对
ActiveDirectoryLdapAuthenticationProvider
的功能和密码有点困惑。它使用类似电子邮件的名称进行绑定,格式为
user@domain.com
其中
domain.com
是您在第一个构造函数中提供的参数。它不使用标准LDAP DN。这是特定于Active Directory的,而不是标准LDAP的一部分。 您可能还想看看这个类的Javadoc和Javadoc


如果您已经有了一个标准的LDAP身份验证配置用于您的设置,那么您不清楚为什么要更改。您最好还是坚持使用现有的,因为它与
ActiveDirectoryLdapAuthenticationProvider

不直接兼容,谢谢您的解释和URL!!所有这些现在都有意义了。出于某种原因,我认为使用ActiveDirectoryLdapAuthenticationProvider是正确的实现方式。看来我错了。