配置Spring Security Ldap 3.0以使用Active Directory LDS

时间:2011-09-15 22:36:46

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

我希望有人能帮我解决一个非常令人沮丧的问题。

目前我正在尝试使用AD LDS实例对Spring Security 3.0 Web App进行身份验证,但我不断收到此错误“Bad Credentials”。不幸的是,我现在还没有其他任何事情要做。

以下是正在使用的安全配置的副本:

<authentication-manager alias="ldapAuthenicationManager"> 
    <ldap-authentication-provider user-dn-pattern="CN={0},OU=Users,O=JLP,C=UK" >
</ldap-authentication-provider> </authentication-manager>

<ldap-server url="ldap://servner ip/o=JLP,c=UK" manager-dn="CN=Manager,O=JLP,C=UK" manager-password="manager" />

我怀疑问题是由<Ldap server>标记引起的,并且没有正确配置manager-dn。管理器的DN直接从AD LDS复制 - 我没有提供足够的信息吗?或者密码是否需要加密\哈希?

有没有人用LDS做过这样的事情 - 你是怎么解决这个问题的?

Applogies这是如此模糊,但这是我必须继续的信息。是否有任何人有任何建议或解决方案?

感谢所有帮助!

干杯

4 个答案:

答案 0 :(得分:3)

我不确定LDS的情况是否会有显着差异,但您是否可以尝试升级到spring security 3.1,因为它有专门的AD身份验证器。

它不需要经理帐户,因为它尝试使用经过身份验证的用户名/密码进行绑定。配置也很少(无DN,搜索模式等)

<security:authentication-manager>
    <security:authentication-provider ref="activeDirectoryAuthenticationProvider"/>
</security:authentication-manager>

<bean id="activeDirectoryAuthenticationProvider"
        class="org.springframework.security.ldap.authentication.ad.ActiveDirectoryLdapAuthenticationProvider">
    <constructor-arg value="${activedirectory.domain}" />
    <constructor-arg value="${activedirectory.server}" />
    <property name="convertSubErrorCodesToExceptions" value="true"/>
</bean>

其中domain = example.com(来自您的示例,jlp.uk)和server = ldap:// ip

答案 1 :(得分:1)

我记得我遇到了同样的问题,解决方案是设置manager-dn的值 到manageruser@yourdomain

e.g。

<ldap-server url="ldap://servner ip/o=JLP,c=UK" manager-dn="morrislgn@example.com" manager-password="manager" />

答案 2 :(得分:0)

感谢您的回答,他们非常乐于助人。

还发现您在manager-dn中使用的用户帐户需要添加到LDS中的读者角色,以便进行搜索。

如果您将用户角色添加到Administrators组,则可以连接但不能搜索。

为你的帮助干杯

答案 3 :(得分:0)

这里有轻微的坏消息,但对于那些通过Google偶然发现这一点的人来说,我发现有关配置LDAP连接的最有用的工具是安装Apache Directory Studio LDAP browser。通过这个工具,我能够获得足够详细的错误消息,以发现我的LDAP配置有什么问题,以及如何纠正它。