Я использую Spring Security с Thymeleaf и хочу создать логин и регистрационную форму на разных сайтах, которые делают использование CSRF-защиты. Защита сайта входа в систему легко, как и с конфигурацией folloing WebSecuritySpring Boot, Spring Security и Thymeleaf: Применить CsrfFilter на веб-сайт с формой
@Override
protected void configure(final HttpSecurity http) throws Exception {
http
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.requestMatchers()
.antMatchers("/login", "/oauth/authorize", "/oauth/confirm_access")
.and()
.authorizeRequests()
.anyRequest()
.authenticated();
}
Spring поддерживает добавление защиты от CSRF в целом по цепочке фильтров безопасности, который строится в методе конфигурирования. Эта цепочка фильтров содержит CSRFFilter, который добавляет/оценивает токен CSRF. Эта цепочка фильтров затем используется для всех совпадений, определенных в приведенной выше конфигурации. Механизм получения фильтров, которые применяются к запросу могут быть найдены here в методе
doFilterInternal(ServletRequest, ServletResponse, FilterChain)
проблема, если добавить «/ зарегистрировать» сайт этой конфигурации, пользователь перенаправляется сначала "/ login". Если я не добавлю его к вышеуказанной конфигурации, упомянутый фильтр FilterChain не применяется (и не CsrfFilter).
Так что я хочу, чтобы повторно использовать CsrfFilter в цепочке фильтров на сайте «/ register», но я не знаю, как это сделать.
Я бы предпочел этот подход к другим идеям, например, написать собственный фильтр CSRF, как предложено here или here.
Hi Aeseir! Это не проблема. Моя цель - включить защиту CSRF в моей/регистрационной форме. Spring поддерживает добавление защиты CSRF в целом с помощью цепочки фильтров безопасности, которая встроена в метод configure. Эта цепочка фильтров содержит CSRFFilter, который добавляет/оценивает токен CSRF. Если я добавлю сайт/register так, как вы предположили, что сайт будет игнорироваться в цепочке фильтров, и поэтому защита CSRF не будет использоваться. Ссылки, которые я добавил в свой пост, предлагают способы добавления механического механизма защиты CSRF, но я предпочел бы повторно использовать существующий к весне. – zersaegen
Я, должно быть, неправильно понял. Итак, вы создаете настраиваемую цепочку фильтров безопасности вместо использования существующей и, следовательно, проблемы? – Aeseir