春の認証マネージャーを使用して認証しようとすると、「資格情報が正しくありません」と表示されます。
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=*"
最初は、LDAP を呼び出す前にパスワードの md5 を実行するように spring に指示する必要があることが問題だと考えていました。したがって、それを 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]
ここで何が問題なのですか?