aa792e16bfebc692cbf14c965bcf0f3ae07cc968
[institute/sw-backend.git] /
1 package com.supwisdom.infras.security.reactive.basic;
2
3 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
4 import org.springframework.context.annotation.Bean;
5 import org.springframework.context.annotation.Configuration;
6 import org.springframework.http.HttpMethod;
7 import org.springframework.security.config.web.server.SecurityWebFiltersOrder;
8 import org.springframework.security.config.web.server.ServerHttpSecurity;
9 import org.springframework.security.web.server.SecurityWebFilterChain;
10 import org.springframework.security.web.server.util.matcher.ServerWebExchangeMatchers;
11
12 @Configuration
13 @ConditionalOnProperty(name="infras.security.basic.enabled", havingValue="true")
14 public class BasicWebFluxSecurityConfiguration {
15   
16   @Bean
17   public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
18       http
19           .securityMatcher(ServerWebExchangeMatchers.pathMatchers("/api/**"))
20           .authorizeExchange()
21               .pathMatchers(HttpMethod.OPTIONS).permitAll()
22               .pathMatchers("/api/public/**", "/api/open/**").permitAll()
23               .pathMatchers("/api/v*/public/**", "/api/v*/open/**").permitAll()
24               .pathMatchers("/api/*/v*/public/**", "/api/*/v*/open/**").permitAll()
25               .pathMatchers("/api/**").authenticated()
26               .anyExchange().authenticated();
27       
28       //http.addFilterAt(webFilter, SecurityWebFiltersOrder.LAST);
29       
30       http.httpBasic();
31       
32       http.csrf().disable();
33       
34       http.formLogin().disable();
35       
36       return http.build();
37   }
38
39 }