Ich verwende Spring-Security 3.2.0.RC2 mit Java-Konfiguration. Ich richte eine einfache HttpSecurity-Konfiguration ein, die nach Basic Auth on/v1/** fragt. GET-Anfragen arbeiten, aber POST-Anfragen nicht mit:In Spring-Security mit Java Config, warum httpBasic POST csrf-Token wollen?
HTTP Status 403 - Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.
Meine Sicherheit Config wie folgt aussehen:
@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();
}
}
}
Jede Hilfe zu diesem Thema sehr geschätzt.
Wenn Sie csrf deaktivieren dan't wollen (da sie es für einen Grund ist) könnte man hinzufügen ein verstecktes Feld mit dem csrf-Wert und füge den Wert hinzu, den starmandeluxe in dem angenommenen Beitrag vorschlägt. Dies funktionierte gut für mich, ohne csrf zu deaktivieren – Xtroce
@ Xtroce ist richtig, obwohl in meinem Fall musste ich 'X-CSRF-TOKEN' zu den Ajax Post * Header * hinzufügen. (Das Hinzufügen von '_csrf' zu den Ajax-Post * -Parametern * hat nicht funktioniert.) – inanutshellus
Wenn Sie zum @Xtroce-Kommentar hinzufügen, können Sie thormeleaf für das Templating verwenden, indem Sie