disable post spring-security csrf http-basic-authentication spring-java-config

post - spring security csrf() disable()



En Spring-Security con Java Config, ¿por qué httpBasic POST quiere el token csrf? (2)

También puede desactivar la comprobación CSRF solo en algunas solicitudes o métodos , utilizando una configuración como la siguiente para el objeto http :

http .csrf().requireCsrfProtectionMatcher(new RequestMatcher() { private Pattern allowedMethods = Pattern.compile("^(GET|HEAD|TRACE|OPTIONS)$"); private RegexRequestMatcher apiMatcher = new RegexRequestMatcher("/v[0-9]*/.*", null); @Override public boolean matches(HttpServletRequest request) { // CSRF disabled on allowedMethod if(allowedMethods.matcher(request.getMethod()).matches()) return false; // CSRF disabled on api calls if(apiMatcher.matches(request)) return false; // CSRF enables for other requests return true; } });

Puedes ver más aquí:

http://blog.netgloo.com/2014/09/28/spring-boot-enable-the-csrf-check-selectively-only-for-some-requests/

Estoy usando Spring-Security 3.2.0.RC2 con la configuración de Java. Configuré una configuración simple de HttpSecurity que solicita autenticación básica en / v1 / **. Las solicitudes GET funcionan pero las solicitudes POST fallan con:

HTTP Status 403 - Invalid CSRF Token ''null'' was found on the request parameter ''_csrf'' or header ''X-CSRF-TOKEN''.

Mi configuración de seguridad se ve así:

@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(); } } }

Cualquier ayuda en esto muy apreciada.


CSRF protección CSRF está habilitada por defecto con la configuración de Java. Para deshabilitarlo:

@Configuration public class RestSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .csrf().disable() ...; } }