2017-06-09 2 views
1

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?

Antwort

1

Ich stolperte gerade über das gleiche Problem und ich archivierte eine bug seit Hash Passwörter scheinen nicht korrekt von der Bibliothek behandelt werden (ich bin nicht sicher, ob sie überhaupt unterstützt werden).

Verwandte Themen