Spring Boot: WebFlux Security

Подобно приложениям Spring MVC, вы можете защитить свои приложения WebFlux, добавив зависимость spring-boot-starter-security. Конфигурация безопасности по умолчанию реализована в ReactiveSecurityAutoConfiguration и UserDetailsServiceAutoConfiguration. ReactiveSecurityAutoConfiguration импортирует WebFluxSecurityConfiguration для веб-безопасности, а UserDetailsServiceAutoConfiguration настраивает проверку подлинности (аутентификацию), что также актуально для не веб-приложений. Чтобы полностью отключить конфигурацию безопасности веб-приложения по умолчанию, вы можете добавить bean-компонент типа WebFilterChainProxy (это не отключает конфигурацию UserDetailsService или защиту Actuator).

Чтобы также отключить конфигурацию UserDetailsService, вы можете добавить компонент типа ReactiveUserDetailsService или ReactiveAuthenticationManager.

Правила доступа и использование нескольких компонентов Spring Security, таких как клиент OAuth 2 и сервер ресурсов (Resource Server), можно настроить, добавив пользовательский компонент SecurityWebFilterChain. Spring Boot предоставляет удобные методы, которые можно использовать для переопределения правил доступа для конечных точек привода и статических ресурсов. EndpointRequest можно использовать для создания ServerWebExchangeMatcher, который основан на свойстве management.endpoints.web.base-path.

PathRequest можно использовать для создания ServerWebExchangeMatcher для ресурсов в часто используемых местах.

Например, вы можете настроить конфигурацию безопасности, добавив что-то вроде:

@Bean
public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
    return http
        .authorizeExchange()
            .matchers(PathRequest.toStaticResources().atCommonLocations()).permitAll()
            .pathMatchers("/foo", "/bar")
                .authenticated().and()
            .formLogin().and()
        .build();
}


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки