16. WebFlux Security

Spring Security 的 WebFlux 支持依赖于WebFilter,并且对 Spring WebFlux 和 Spring WebFlux.Fn 相同。您可以找到一些演示以下代码的示例应用程序:

16.1 最低的 WebFlux 安全配置

您可以在下面找到最小的 WebFlux 安全配置:

@EnableWebFluxSecurity
public class HelloWebfluxSecurityConfig {

    @Bean
    public MapReactiveUserDetailsService userDetailsService() {
        UserDetails user = User.withDefaultPasswordEncoder()
            .username("user")
            .password("user")
            .roles("USER")
            .build();
        return new MapReactiveUserDetailsService(user);
    }
}

此配置提供表单和 http 基本身份验证,设置授权以要求经过身份验证的用户访问任何页面,设置默认登录页面和默认注销页面,设置与安全性相关的 HTTPHeaders,CSRF 保护等。

16.2 显式 WebFlux 安全配置

您可以在下面找到最小 WebFlux 安全配置的显式版本:

@EnableWebFluxSecurity
public class HelloWebfluxSecurityConfig {

    @Bean
    public MapReactiveUserDetailsService userDetailsService() {
        UserDetails user = User.withDefaultPasswordEncoder()
            .username("user")
            .password("user")
            .roles("USER")
            .build();
        return new MapReactiveUserDetailsService(user);
    }

    @Bean
    public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
        http
            .authorizeExchange()
                .anyExchange().authenticated()
                .and()
            .httpBasic().and()
            .formLogin();
        return http.build();
    }
}

此配置显式设置与最小配置相同的所有内容。在这里,您可以轻松地更改默认值。

Security HTTP Response Headers
This section discusses Spring Security's support for adding various security headers to the response of WebFlux.