2015-10-14 7 views
6

Ich habe eine Spring-Webanwendung mit aktiviertem CSRF-Schutz. Ich kann auf den RESTful-Service über AJAX-Aufrufe zugreifen, aber wenn ich mit anderen Anwendungen wie httpurlconnection auf den Dienst zugreife, erhalte ich einen 401-Fehler (CSRF-Token null).Wie CSRF-Schutz mit Spring RESTful Web Services behandelt werden?

Ich verstehe, dass für den Zugriff auf den RESTful-Dienst muss ich ein Token im Anfrage-Header übergeben, aber wie kann ich das CSRF-Token bekommen?

Antwort

10

Sie können eine Zuordnung in Spring MVC erstellen, die die CSRF-Token bekommt:

@RequestMapping(value="/csrf-token", method=RequestMethod.GET) 
public @ResponseBody String getCsrfToken(HttpServletRequest request) { 
    CsrfToken token = (CsrfToken)request.getAttribute(CsrfToken.class.getName()); 
    return token.getToken(); 
} 
+0

I Back-End hat dieses Bild meiner Frühling und ich kann Geta csrf-Token. Nun ist die Frage ... wie übergebe ich das an meine Spring POST/PUT Web-Services? Ich möchte diesen Teil meiner JSON-Daten lieber nicht zurücksenden. Ich wäre mehr als glücklich, den Token in einer Kopfzeile oder als Teil eines Cookies in der Anfrage zu platzieren. – tjholmes66

+1

@ tjholmes66 Sie können das Token in einer Kopfzeile mit dem Namen 'X-CSRF-TOKEN' senden. – holmis83

+0

Ja. Vielen Dank. Ich habe es jetzt herausgefunden. Vielen Dank! – tjholmes66