76cc9275de328bbdba6e4d512dce8af870668bf4
[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.reactive.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       http.formLogin().disable();
32
33       http.csrf().disable();
34       
35       return http.build();
36   }
37
38 }