package br.com.treinaweb.twjobs.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration; import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.web.AuthenticationEntryPoint; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.access.AccessDeniedHandler; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import br.com.treinaweb.twjobs.api.common.filters.AccessTokenRequestFilter; import lombok.RequiredArgsConstructor; @Configuration @EnableWebSecurity @RequiredArgsConstructor @EnableMethodSecurity(prePostEnabled = true) public class SecurityConfig { private final AccessDeniedHandler accessDeniedHandler; private final AccessTokenRequestFilter accessTokenRequestFilter; private final AuthenticationEntryPoint authenticationEntryPoint; @Bean SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { return http .authorizeHttpRequests(customizer -> customizer .anyRequest().permitAll() ) // .logout((logout) -> logout.logoutUrl("/teste/logout").permitAll()) .csrf(customizer -> customizer .disable() ) .sessionManagement(customizer -> customizer .sessionCreationPolicy(SessionCreationPolicy.STATELESS) ) .exceptionHandling(customizer -> customizer .authenticationEntryPoint(authenticationEntryPoint) .accessDeniedHandler(accessDeniedHandler) ) .addFilterBefore(accessTokenRequestFilter, UsernamePasswordAuthenticationFilter.class) .build(); } @Bean AuthenticationManager authenticationManager( AuthenticationConfiguration authenticationConfiguration ) throws Exception { return authenticationConfiguration.getAuthenticationManager(); } }