Настройка защиты Spring Security CSRF в приложениях Reactive WebFluxJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Настройка защиты Spring Security CSRF в приложениях Reactive WebFlux

Сообщение Anonymous »

Я работаю над архитектурой микросервисов, которая сочетает в себе сервлеты и реактивные приложения Spring Boot; они развернуты в кластере K8S, и каждый микросервис предоставляет конечные точки Spring Actuator для мониторинга работоспособности и управления журналированием: фактически мы используем конечные точки /actuator/loggers в POST для установки определенных уровней во время выполнения. . Это может произойти с помощью вызовов Curl из терминала или из приложений управления, таких как Spring Boot Admin.
Я опубликовал два примера этих микросервисов по адресу https://github.com/polifr. /csrf-servlet и https://github.com/polifr/csrf-reactive, в комплекте с тестовыми классами junit и тремя различными конфигурациями CSRF (отключено, включено, настроено с определенными исключениями); Я обращусь к источникам этих проектов, чтобы объяснить ситуацию дальше.
Конечная точка конфигурации журналирования подпадает под управление политики CSRF, поскольку вызывается с помощью POST. В случае сервлета исключение можно установить с помощью метода ignoreRequestMatchers, например (

Код: Выделить всё

CsrfIgnoringSecurityConfiguration
проекта csrf-servlet):

Код: Выделить всё

log.debug("Csrf is enabled");
http.csrf(
csrf ->
csrf.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
.ignoringRequestMatchers(EndpointRequest.to(LoggersEndpoint.class)));
В этом случае это украшение политики CSRF, установленной контекстом.
Вместо этого для реактивного стека: нет эквивалентного метода; Я попробовал решение, приведенное в разделе «Как добавить отключение CSRF для определенного URL-адреса в базовой аутентификации Spring Web Flux (реактивное программирование), но оно не работает: фактически оно блокирует CSRF все остальные конечные точки, а также GET.
На данный момент единственное решение, которое я нашел, это (

Код: Выделить всё

CsrfIgnoringSecurityConfiguration
проекта csrf-reactive):

Код: Выделить всё

log.debug("Csrf is enabled");
http.csrf(
csrf ->
csrf.csrfTokenRepository(CookieServerCsrfTokenRepository.withHttpOnlyFalse())
.requireCsrfProtectionMatcher(
new AndServerWebExchangeMatcher(
CsrfWebFilter.DEFAULT_CSRF_MATCHER,
new NegatedServerWebExchangeMatcher(
EndpointRequest.to(LoggersEndpoint.class)))));
Но в этом случае я перезаписываю контекстно-управляемые политики CSRF, которые могут включать определенные исключения, например. аутентификация. См., например, Spring Security ServerHttpSecure:

Код: Выделить всё

private void registerDefaultCsrfOverride(ServerHttpSecurity http) {
if (http.csrf != null && !http.csrf.specifiedRequireCsrfProtectionMatcher) {
AndServerWebExchangeMatcher matcher = new AndServerWebExchangeMatcher(
CsrfWebFilter.DEFAULT_CSRF_MATCHER,
new NegatedServerWebExchangeMatcher(this.authenticationConverterServerWebExchangeMatcher));
http.csrf().requireCsrfProtectionMatcher(matcher);
}
}
Помимо попытки попросить сообщество Spring реализовать также для реактивного стека метод ignoreRequestMatchers, есть ли у кого-нибудь какие-нибудь предложения о том, как реализовать этот вид настройки CSRF в чище?

Подробнее здесь: https://stackoverflow.com/questions/791 ... plications
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • ОЧЕНЬ ОЧЕНЬ СТРАННОЕ ПОВЕДЕНИЕ: ЗАГРУЗЧИК в виде JAR Spring WebFlux реактивный с Reactive Repository
    Anonymous » » в форуме JAVA
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Spring Boot Reactive с Webflux: безопасность с LDAP Bind Fail
    Anonymous » » в форуме JAVA
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Spring Boot Reactive с Webflux: безопасность с LDAP Bind Fail
    Anonymous » » в форуме JAVA
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Spring Boot Reactive с Webflux: безопасность с LDAP Bind Fail
    Anonymous » » в форуме JAVA
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Spring Boot Reactive с Webflux: безопасность с LDAP Bind Fail
    Anonymous » » в форуме JAVA
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»