28.2 WebFlux Security

与Spring MVC应用程序类似,您可以通过添加Spring-boot-starter-security依赖项来保护WebFlux应用程序.默认的安全配置在ReactiveSecurityAutoConfigurationUserDetailsServiceAutoConfiguration中实现. ReactiveSecurityAutoConfiguration为web安全性导入WebFluxSecurityConfiguration,UserDetailsServiceAutoConfiguration配置身份验证,这也与非web应用程序相关.要完全关闭默认的web应用程序安全配置,您可以添加WebFilterChainProxy类型的Bean实例(这样做不会禁用UserDetailsService配置或Actuator(执行器)的安全性).

为了也关掉UserDetailsService配置,您可以添加一个ReactiveUserDetailsService类型的Bean实例或ReactiveAuthenticationManager.

可以通过添加自定义的SecurityWebFilterChain来配置访问规则.Spring Boot提供了便利的方式来覆盖actuator(执行器)的端点和静态资源的访问规则.EndpointRequest可以用来创建一个基于management.endpoints.web.base-path属性值得ServerWebExchangeMatcher.

PathRequest可以用来创建一个常用路径下的资源使用的ServerWebExchangeMatcher.

例如,您可以通过添加以下类似配置定制您的安全配置:

  1. @Bean
  2. public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
  3. return http.authorizeExchange()
  4. .matchers(PathRequest.toStaticResources().atCommonLocations()).permitAll()
  5. .pathMatchers("/foo", "/bar")
  6. .authenticated().and()
  7. .formLogin().and()
  8. .build();
  9. }