Spring Sicherheitsauthentifizierung Cross-Herkunft mit Cookies vs Autorisierungsheader

7

Ich verwende Spring Security für die Authentifizierung meiner REST-API. Die Authentifizierung funktioniert einwandfrei und Spring Security gibt ein Token mit Set-Cookie zurück. Das Feature rememberMe ist aktiviert und wird im Cookie zurückgegeben.

Wenn ich nachfolgende Anfragen mache, schlägt die Authentifizierung fehl, wenn ich nicht den Benutzernamen / das Passwort in der Kopfzeile Authorization sende, während ich im Postman teste, funktioniert es. Ich sehe, dass JSESSIONID im Cookie in der Anfrage hinzugefügt wird.

Da der Cookie als Http-Only cookie, glaube ich nicht, dass ich sie in meiner JavaScript-Funktion lesen kann.

Wie authentifiziere ich den Benutzer? Ich ging davon aus, dass wenn der Server einen Cookie mit set-cookie zurückgibt, der Browser ihn automatisch für jede Anfrage anhängen sollte.

Login-Client-Anfrage:

%Vor%

Anforderungsheader:

%Vor%

Antwortheader:

%Vor%

Nachfolgende Anforderung zum Abrufen von Daten:

%Vor%

Kundenanfrage:

%Vor%

Serverantwort:

%Vor%

Hinzufügen von withCredentials : true :

%Vor%

Antwort:

%Vor%

Zu Ihrer Information: Ich benutze Vuejs im Frontend.

    
Sam 17.08.2017, 16:13
quelle

1 Antwort

4

Nachdem Sie Ihren Antwort- / Anfrageablauf sorgfältig geprüft haben, senden Sie Anfragen von Port 8080 an Port 9000, die Regeln für dieselbe Ursprungsrichtlinie (CORS) auslösen. CORS-Anfragen senden standardmäßig keine Credentials / Cookies, wie im nachfolgenden Link dokumentiert. Um die Weitergabe von Anmeldeinformationen / Cookies zu aktivieren, müssen Sie das Flag "withCredentials" in Ihrem AJAX-Aufruf festlegen.

Außerdem sieht es so aus, als ob du Vuejs benutzt. Um credentials zu aktivieren, müssen Sie die folgende Einstellung verwenden.

%Vor%

MDN - Anforderung mit Anmeldeinformationen

    
Newbie 21.08.2017 06:14
quelle