Ich versuche Spring Boot LDAP Security zu implementieren, und ich verwende den eingebetteten LDAP-Server embedded LDAP zum Testen (wie das Tutorial here). Ich habe die Web-Sicherheit so konfiguriert, dass sie die LDAP-Bindung für die Authentifizierung verwendet und erfolgreich mit Klartext-Passwörtern getestet wurde. Wenn ich jedoch das Passwort in eine Hash-Version ändere, schlägt die Authentifizierung fehl. Fehle ich etwas Konfiguration?Spring Embedded LDAP bindet keine gehashten Passwörter
Hier ist meine Sicherheitskonfiguration:
@Configuration
@EnableWebSecurity
public class MyWebSecurityConfiguration extends WebSecurityConfigurerAdapter
{
...
@Override
protected void configure(AuthenticationManagerBuilder authenticationManagerBuilder)
throws Exception
{
authenticationManagerBuilder.
ldapAuthentication().
userSearchFilter(this.ldapUserSearchFilter).
userSearchBase(this.ldapUserSearchBase).
contextSource(this.contextSource()).
ldapAuthoritiesPopulator(this.authoritiesPopulator());
}
@Bean
public DefaultSpringSecurityContextSource contextSource()
{
DefaultSpringSecurityContextSource securityContextSource =
new DefaultSpringSecurityContextSource(
Collections.singletonList(this.ldapUrl),
this.ldapBaseDn);
return securityContextSource;
}
...
}
Die eingebetteten LDAP-Eigenschaften:
spring.ldap.embedded.ldif=classpath:ldap-test.ldif
spring.ldap.embedded.base-dn=dc=testing,dc=com
spring.ldap.embedded.port=8389
Und die die LDIF-Datei:
dn: dc=testing,dc=com
objectclass: top
objectclass: domain
objectclass: extensibleObject
dc: testing
dn: ou=TestingUsers,dc=testing,dc=com
objectclass: top
objectclass: organizationalUnit
ou: TestingUsers
dn: uid=testUser,ou=TestingUsers,dc=testing,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Blah_1
sn: Blah_2
uid: testingUser
userPassword: pass
diese Einstellungen verwenden, kann ich mit der authentifizieren Benutzername TestUser und passwort pass. Aber wenn ich das Hash-Passwort verwenden:
userPassword: {SHA}9d4e1e23bd5b727046a9e3b4b7db57bd8d6ee684
kann ich nicht authentifizieren und erhalten diese Ausnahme:
javax.naming.AuthenticationException: [LDAP: error code 49 - Unable to bind as user 'uid=testingUser,ou=TestingUsers,dc=testing,dc=com' because the provided password was incorrect.]
Danke für Ihre Hilfe!
UPDATE:
ich mit Hash-Passwörter festgestellt, dass ich durch Eingabe der Hash selbst, anstatt das ursprüngliche Passwort authentifizieren können. Also vielleicht unboundid-ldapsdk erkennt nicht die {SHA} -Notation?