49 lines
1.9 KiB
Java
49 lines
1.9 KiB
Java
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();
|
|
}
|
|
}
|
|
|