2015-10-14 24 views
6

Mam wiosenną aplikację internetową z włączoną ochroną CSRF. Jestem w stanie uzyskać dostęp do usługi RESTful za pośrednictwem wywołań AJAX, ale gdy uzyskuję dostęp do usługi z innymi aplikacjami, takimi jak httpurlconnection, pojawia się błąd 401 (null token CSRF).Jak obsługiwać ochronę CSRF za pomocą usług sieci Web Spring RESTful?

Rozumiem, że aby uzyskać dostęp do usługi RESTful, muszę przekazać token w nagłówku żądania, ale jak mogę uzyskać token CSRF?

Odpowiedz

10

Można utworzyć odwzorowanie w Spring MVC, który otrzymuje token CSRF:

@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 dodali to do mojego wiosny back-end i mogę geta csrf-żeton. Teraz pytanie brzmi ... jak przekazać to z powrotem do moich usług internetowych Spring POST/PUT? Wolałbym nie odsyłać tej części moich danych JSON. Byłbym bardziej niż szczęśliwy, aby umieścić token w nagłówku lub jako część pliku cookie w żądaniu. – tjholmes66

+1

@ tjholmes66 Możesz wysłać token w nagłówku o nazwie "X-CSRF-TOKEN". – holmis83

+0

Tak. Dzięki. Rozgryzłem to teraz. Dzięki! – tjholmes66