2015-03-18 11 views
12

Sono in riferimento alla documentazione di Primavera di sicurezza sulla configurazione di protezione CSRF:Configurazione di un AccessDeniedHandler al fine di elaborare un CSRF non valida gettone

Invece dalla protezione CSRF di impostazione predefinita Primavera di sicurezza produrrà un HTTP 403 accesso negato. Questo può essere personalizzato configurando AccessDeniedHandler per elaborare InvalidCsrfTokenException in modo diverso.

vedere qui: http://docs.spring.io/spring-security/site/docs/3.2.6.RELEASE/reference/htmlsingle/#csrf-configure

sono incerto come configurare il mio gestore per far fronte con l'invalido token CSRF.

private AccessDeniedHandler accessDeniedHandler() { 
     return new AccessDeniedHandler() { 
      @Override 
      public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException { 
       // TODO: deal with InvalidCsrfTokenException 
       response.setStatus(HttpStatus.FORBIDDEN.value()); 
      } 
     }; 
    } 

Uso angolare sul lato client per comunicare con la mia app Spring in REST.

Qual è il modo migliore per gestire i token CSRF stantii/non validi?

Devo utilizzare lo AccessDeniedHandler per aggiungere un'intestazione di risposta http personalizzata che indica che il token CSRF non è valido e lo elabora sul lato client? Ma come posso richiedere un nuovo token CSRF da JS?

C'è un altro e migliore modo di procedere e come posso

processo l'InvalidCsrfTokenException diverso

?

risposta

4

Se viene fornito un messaggio di errore dettagliato, utilizzare AccessDeniedHandler. Il gestore gestisce lo InvalidCsrfTokenException e lo MissingCsrfTokenException

E perché si desidera generare il token csrf? Ogni volta che richiedi un sito Spring lo genererà per te. Ma se si vuole veramente realizzare un proprio CSRF strategie dare un'occhiata alla chiamata CsrfAuthenticationStrategy

primavera questa classe ogni volta nel SessionManagementFilter

Problemi correlati