0

当我们尝试使用 spring 身份验证管理器进行身份验证时,它会显示“凭据错误”:

Authentication request = new UsernamePasswordAuthenticationToken("john", "johnldap");
result = authenticationManager.authenticate(request);

这里是 SecurityApplicationContext.xml 文件:

  <authentication-manager alias="authenticationManager">
        <ldap-authentication-provider server-ref="ldapLocal"
            user-dn-pattern="uid={0},ou=People,dc=example,dc=com">         
        </ldap-authentication-provider> 
    </authentication-manager>
    <ldap-server url="ldap://127.0.0.1:389/dc=example,dc=com" manager-dn="admin" manager-password="xxxxxxxx" id="ldapLocal"  />

但是使用“ldapsearch”我们可以成功连接:

ldapsearch -D "uid=john,ou=People,dc=example,dc=com" -w johnldap  -L "objectClass=*"

起初我们认为问题在于我们必须告诉 spring 在调用 LDAP 之前对密码进行 md5 处理。所以我们将它添加到 applicationSecurtyContext.xml 中:

    <beans:bean id="passwordEncoder"  class="org.springframework.security.authentication.encoding.Md5PasswordEncoder">
    </beans:bean>
    <authentication-manager alias="authenticationManager">
        <ldap-authentication-provider server-ref="ldapLocal"
            user-dn-pattern="uid={0},ou=People,dc=example,dc=com">  
         <password-compare>
            <password-encoder ref="passwordEncoder"> </password-encoder>
        </password-compare>
        </ldap-authentication-provider> 
    </authentication-manager>
    <ldap-server url="ldap://127.0.0.1:389/dc=example,dc=com" manager-dn="admin" manager-password="xxxxxxxx" id="ldapLocal"  />

但是当我们添加标签时,它会说:

LDAP: error code 34 - invalid DN]

这里有什么问题?

4

2 回答 2

1

如果我没记错的话,user-dn-pattern不应该包含根 dn,因为它会自动附加。所以尝试使用:

user-dn-pattern="uid={0},ou=People">

password-encoder如果您只想进行简单的绑定身份验证,我认为您不需要。

于 2013-05-14T10:42:41.537 回答
0

我花了很多时间尝试连接spring security,查看stackoverflow我还认为它可能是编码问题,因为密码在md5中,虽然我必须单独添加上面提到的root dn,密码由ldap服务器编码. 以下是我的工作版本:

<ldap-server url="ldap://dsa.company.com:389/" manager-dn="cn=manager,dc=company,dc=com"
    manager-password="pass"></ldap-server>
<authentication-manager>
    <ldap-authentication-provider
        user-dn-pattern="cn={0},ou=people,dc=company,dc=com"
        group-search-base="ou=groups,dc=company,dc=com" />
</authentication-manager>
于 2013-12-03T13:09:00.490 回答