Наше приложение, использующее структуру Spring, должно реализовать токен CSRF на основе запроса, чтобы соответствовать требованиям безопасности. В настоящее время у нас есть токен CSRF на основе сеанса, предоставляемый HttpSessionCsrfTokenRepository по умолчанию в Spring. Согласно инструкции, которую я нашел, настроив xml следующим образом
<security:csrf token-repository-ref="customRequestCsrfTokenRepository"/>
<bean id="customRequestCsrfTokenRepository" class="com.dev.common_web.security.configuration.CustomCsrfTokenRepository"/>
Пользовательский репозиторий токенов, который реализует интерфейс CsrfTokenRepository, будет загружен для обработки запроса токена.
Однако, когда приложение запускается и работает в режиме отладки, я вижу, что по умолчанию HttpSessionCsrfTokenRepository используется для обработки загрузки и создания токена. Я также пытался использовать spring CookieCsrfTokenRepository в конфигурации xml, например
<security:csrf token-repository-ref="cookieCsrfTokenRepository"/>
<bean id="cookieCsrfTokenRepository" class="org.springframework.security.web.csrf.CookieCsrfTokenRepository"/>
И когда приложение работает, это снова HttpSessionCsrfTokenRepository, который загружается для обработки запроса токена. Кажется, не имеет значения, что настроено как значение token-repository-ref в xml, всегда используется HttpSessionCsrfTokenRepository.
Как настроить Spring для использования другого репозитория токенов csrf вместо стандартного HttpSessionCsrfTokenRepository? Мы используем Spring 5.2.