LdapAuthenticationProvider gibt die NullPointerException bei AbstractContextSource.getReadOnlyContext aus

8

Ich habe die Spring Security LDAP-Authentifizierung in der XML-Datei definiert und es funktionierte einwandfrei:

%Vor%

Ich musste einige Logiken in den Authentifikator-Provider einfügen (Logging in die Datenbank, um einen zu benennen), also habe ich DaoAuthenticationProvider implementiert, um LDAP zu verwenden:

XML-Konfiguration:

%Vor%

Klassenimplementierung:

%Vor%

Es sieht so aus, was Sie von der ersten Implementierung erwarten würden, aber die Authentifizierungsmethode löst die folgende Ausnahme aus:

%Vor%

Loggt im ersten Fall sieht so aus:

%Vor%

Im zweiten Fall:

%Vor%

Haben Sie eine Idee?

    
Bad Pitt 16.05.2012, 09:59
quelle

1 Antwort

18

Sie initialisieren das DefaultSpringSecurityContextSource nicht vollständig (da Sie es manuell mit "new" erstellen).

Fügen Sie dies unter der Erstellung hinzu, und Sie sollten alle festgelegt werden:

%Vor%

In diesem speziellen Fall ist diese Zeile der Schlüssel:

%Vor%

Wenn Sie versuchen, Ihre manuell erstellte (aber nicht ordnungsgemäß initialisierte) Kontextquelle zu verwenden, wird das Standardverhalten verwendet, das den nicht anonymen Zugriff auf schreibgeschützte Operationen verwendet. Da Sie ein Manager-DN / Kennwort angeben, schlägt es mit einer NPE fehl. Wenn Sie die Instanz ordnungsgemäß initialisieren (indem Sie afterPropertiesSet() aufrufen), wird sie so eingestellt, dass sie den anonymen Zugriff als schreibgeschützt verwendet, da kein Benutzer / pwd angegeben ist.

    
pap 16.05.2012, 12:24
quelle