La versión de Springboot utilizada en este artículo: 2.7.6
Después de introducir springsecurity, configure todas las solicitudes para que sean accesibles:
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().permitAll();
return http.build();
}
}
Al enviar una solicitud de publicación, la respuesta es 403:
{
"timestamp": "2023-08-03T06:56:00.277+00:00",
"status": 403,
"error": "Forbidden",
"path": "/hi"
}
No hubo ningún mensaje de error relevante en la consola, así que activé la depuración y rastreé para ver los detalles específicos del error:
debug: true
trace: true
La solicitud se inició nuevamente y la información de error relevante se imprimió en la consola, que fue interceptada por el filtro CsrfFilter.
o.s.security.web.csrf.CsrfFilter : Invalid CSRF token found for http://127.0.0.1:9001/hi
o.s.s.w.access.AccessDeniedHandlerImpl : Responding with 403 status code
o.s.w.s.m.m.a.HttpEntityMethodProcessor : Writing [{
timestamp=Thu Aug 03 14:56:00 CST 2023, status=403, error=Forbidden, path=/hi}]
De acuerdo con la ruta de clase: ossecurity.web.csrf.CsrfFilter, verifique el código de CsrfFilter. Para evitar ataques csrf, CsrfFilter verificará la exactitud del csrftoken incluido en la solicitud. Si falla, responderá con 403. Algunos Códigos clave: Entonces, la
solicitud de obtención es normal, publique. Se produjo un error 403 con la solicitud.
CSRF es un gigante dormido y necesita protección. Si no utiliza springsecurity csrftoken, simplemente desactive csrf:
http.authorizeRequests().anyRequest().permitAll().and().csrf().disable();