当我们尝试使用 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]
这里有什么问题?