2016-04-02 13 views
2

Ich baue eine RESTful Spring Boot und React/Alt-Anwendung. Ich möchte Spring-Sicherheit hinzufügen, um sicherzustellen, dass keine nicht authentifizierten Anfragen an die API gesendet werden können.Spring Boot Security und Auth0 - CSRF kann nicht deaktiviert werden

Ich benutze Auth0 für einen Authentifizierungsanbieter, damit Benutzer sich bei der Anwendung anmelden können, genauer gesagt, die Bibliothek feather-security-auth0, um die serverseitigen Sicherheitsaspekte zu behandeln. https://github.com/auth0/spring-security-auth0

Nach dem Grund Tutorial auf Auth0 folgenden, ich habe die Sicherheit config in meiner Feder Anwendung so konfiguriert, dass Anfragen an die API nicht ohne JSON Web-Token funktionieren wird. Dies funktioniert, aber es gibt einige Endpunkte (solche, die einen POST benötigen) in den Controllern, die dies nicht tun. Ich erhalte diese Fehler in Chrome devtools -

Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN' 

Ich verstehe, dass es keine CSRF-Header vorhanden ist und das ist, warum es nicht funktioniert. Aber der Hauptgrund, warum ich verwirrt bin, ist, weil ich CSRF deaktiviert habe und es immer noch passiert. Da die Feder docs anweisen, habe ich dies getan -

@Configuration 
@EnableWebSecurity 
@ComponentScan("com.auth0") 
@ImportResource("classpath:auth0-security-context.xml") 
@PropertySource("classpath:auth0.properties") 
public class SecurityConfig extends WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http.csrf().disable(); 
    } 

Ich brauche CSRF nicht in diesem Fall als die App wird immer nur in einer Entwicklungsumgebung verwendet werden. Warum passiert das immer noch, obwohl ich CSRF vollständig deaktiviert habe?

Antwort

0

Der CsrfFilter, der für die Ausnahme verantwortlich ist, ist eindeutig aktiviert. Dies kann verschiedene Gründe haben. Kann es sein, dass Sie irgendwo eine andere Instanz von WebSecurityConfigurerAdapter konfiguriert haben?

Sie können versuchen, die folgenden:

einen Haltepunkt in Zeile Set 'http.csrf() deaktivieren();' um zu sehen, ob es wirklich ausgeführt wird.

Legen Sie Haltepunkte in den Konstruktoren von WebSecurityConfigurerAdapter fest, um festzustellen, ob viele Instanzen erstellt wurden.

Dies sollten Sie zeigen, was falsch geht ..

+0

Ja ich das getan hatte, aber ich bin nicht sehr vertraut mit XML-Konfiguration im Frühjahr. Ich entschied mich, den Authentifizierungs-XML-Kontext Auth0 in Java Config zu konvertieren und CSRF dort zu deaktivieren. Alles funktioniert jetzt, danke! –

Verwandte Themen