我们正在尝试使用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和密码吗?
答案 0 :(得分:7)
看起来你可能会对ActiveDirectoryLdapAuthenticationProvider
做什么和how to configure it感到有些困惑。它使用user@domain.com
形式的类似电子邮件的名称进行绑定,其中domain.com
是您在第一个构造函数中提供的参数。它不使用标准LDAP DN。这特定于Active Directory,而不是标准LDAP的一部分。
您可能还想查看该课程的the source和Javadoc。
如果您已经有一个标准的LDAP身份验证配置使用您的设置,那么您不清楚为什么要更改。你可能最好坚持使用你拥有的东西,因为它不会与ActiveDirectoryLdapAuthenticationProvider
直接兼容。