Utilizzo Spring-Security 3.2.0.RC2 con configurazione Java. Ho configurato una semplice configurazione di HttpSecurity che richiede l'autenticazione di base su/v1/**. richieste GET funzionano, ma le richieste POST non riescono con:In Spring-Security con Java Config, perché HTTPBasic POST desidera il token csrf?
HTTP Status 403 - Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.
mio config di sicurezza si presenta così:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Resource
private MyUserDetailsService userDetailsService;
@Autowired
//public void configureGlobal(AuthenticationManagerBuilder auth)
public void configure(AuthenticationManagerBuilder auth)
throws Exception {
StandardPasswordEncoder encoder = new StandardPasswordEncoder();
auth.userDetailsService(userDetailsService).passwordEncoder(encoder);
}
@Configuration
@Order(1)
public static class RestSecurityConfig
extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/v1/**").authorizeRequests()
.antMatchers("/v1/**").authenticated()
.and().httpBasic();
}
}
}
Qualsiasi aiuto su questo molto apprezzato.
Se si desidera disabilitare dan't CSRF (dal momento che è lì per un motivo) si potrebbe aggiungere un campo nascosto con il valore csrf e aggiungi il valore come suggerisce starmandeluxe nel post accettato. Questo ha funzionato bene per me, senza disabilitare csrf – Xtroce
@Xtroce ha ragione, anche se nel mio caso ho dovuto aggiungere 'X-CSRF-TOKEN' alle intestazioni * del post dell'ajax *. (L'aggiunta di '_csrf' al parametro dell'ajax * parametri * non ha funzionato.) – inanutshellus
Aggiunta al commento @Xtroce, se si utilizza thymeleaf per il template, è possibile aggiungere