2015-10-14 8 views
6

Possiedo un'applicazione Web Spring con protezione CSRF abilitata. Sono in grado di accedere al servizio RESTful tramite chiamate AJAX, ma quando accedo al servizio con altre applicazioni come httpurlconnection, ottengo un errore 401 (token CSRF null).Come gestire la protezione CSRF con i servizi Web Spring RESTful?

Capisco che per accedere al servizio RESTful ho bisogno di passare un token nell'intestazione della richiesta, ma come posso ottenere il token CSRF?

risposta

10

È possibile creare una mappatura in Spring MVC che ottiene il 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

ho aggiunto questo al mio Primavera di back-end e posso geta CSRF-token. Ora la domanda è ... come posso passare questo ai miei servizi web POST/PUT di primavera? Preferirei non restituire questa parte dei miei dati JSON. Sarei più che felice di mettere il token in un'intestazione o come parte di un cookie nella richiesta. – tjholmes66

+1

@ tjholmes66 È possibile inviare il token in un'intestazione denominata 'X-CSRF-TOKEN'. – holmis83

+0

Sì. Grazie. L'ho capito ora. Grazie! – tjholmes66