package com.intc.gateway.config; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity; import org.springframework.security.config.web.server.ServerHttpSecurity; import org.springframework.security.core.userdetails.MapReactiveUserDetailsService; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.web.server.SecurityWebFilterChain; @Configuration @EnableWebFluxSecurity public class SecurityConfig { @Value("${spring.security.user.name}") private String name; @Value("${spring.security.user.password}") private String password; @Bean public MapReactiveUserDetailsService userDetailsService() { UserDetails userWebFlux = User.withUsername(name).password(new BCryptPasswordEncoder().encode(password)).roles("admin").build(); return new MapReactiveUserDetailsService(userWebFlux); } @Bean public BCryptPasswordEncoder bCryptPasswordEncoder() { return new BCryptPasswordEncoder(); } @Bean public SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity httpSecurity){ httpSecurity .authorizeExchange() .pathMatchers("/actuator/**").hasRole("admin") .anyExchange().permitAll() .and() .csrf() .disable() .cors() .and() .httpBasic();; return httpSecurity.build(); } }