По умолчанию Spring Boot активирует защиту от CSRF-атаки (атака подделки межсайтовых запросов).Атака состоит из вредоносного сайта, использующего преимущества того, что пользователь уже прошел аутентификацию на сайте (например, в банке), чтобы обманом заставить пользователя выполнять действия на этом сайте (например, перевод средств).
Защита отатака состоит в том, что приложение Spring Boot отправляет токен с каждым ответом и ожидает, что токен будет отправлен клиентом при последующем запросе.Если токен не получен, Spring Boot возвращает ошибку.
Иногда вы хотите отключить это поведение (на свой страх и риск), поэтому вы используете csrf.disable
.Возможно, вам будет удобно отключить защиту csrf, если вы разрабатываете API без сохранения состояния, и у вас нет возможности связать запрос POST с любыми предыдущими запросами или сеансом.Но опять же, вы должны тщательно обдумать это и аргументировать.
Обратите внимание, что защита CSRF не влияет на запросы GET.Он влияет только на запросы изменения состояния (например, POST, DELETE)
Чтобы разрешить передачу ваших конечных точек кому-либо, не требуя никакой аутентификации, вам необходимо использовать
http.authorizeRequests ().antMatchers ("/ **"). allowAll ();
РЕДАКТИРОВАТЬ
Специально разрешать несанкционированные запросы на /bars/pk
и сохранять другие элементыбез изменений измените код следующим образом:
http.csrf().disable()
.requestMatchers()
.antMatchers("/oauth/token")
.and()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeRequests()
.antMatchers(HttpMethod.OPTIONS).permitAll()
.antMatchers("/bars/pk").permitAll()
.anyRequest().authenticated();