package com.interplug.qcast.config.security; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.config.Customizer; import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configurers.CsrfConfigurer; import org.springframework.security.config.annotation.web.configurers.HttpBasicConfigurer; import org.springframework.security.web.SecurityFilterChain; @Configuration @EnableWebSecurity public class SecurityConfig { private static final String[] WHITELIST = { "/api/**", "/swagger-ui/**", "/v3/api-docs/**", "/actuator/**" }; @Bean public AuthenticationManager authenticationManager( AuthenticationConfiguration authenticationConfiguration) throws Exception { return authenticationConfiguration.getAuthenticationManager(); } @Bean protected SecurityFilterChain configure(HttpSecurity httpSecurity) throws Exception { // security default login & csrf disable. httpSecurity .httpBasic(HttpBasicConfigurer::disable) .csrf(CsrfConfigurer::disable) .cors(Customizer.withDefaults()) .authorizeHttpRequests( authorize -> authorize.requestMatchers(WHITELIST).permitAll().anyRequest().authenticated()); return httpSecurity.build(); } }