SecurityConfiguration.java 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package com.platform2easy.genesis.security.config;
  2. import com.platform2easy.genesis.security.filter.AuthorizationFilter;
  3. import lombok.AllArgsConstructor;
  4. import org.springframework.context.annotation.Bean;
  5. import org.springframework.context.annotation.Configuration;
  6. import org.springframework.security.authentication.AuthenticationManager;
  7. import org.springframework.security.config.Customizer;
  8. import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
  9. import org.springframework.security.config.annotation.web.builders.HttpSecurity;
  10. import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
  11. import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
  12. import org.springframework.security.config.http.SessionCreationPolicy;
  13. import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
  14. import org.springframework.security.crypto.password.PasswordEncoder;
  15. import org.springframework.security.web.SecurityFilterChain;
  16. import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
  17. @Configuration
  18. @EnableWebSecurity
  19. @AllArgsConstructor
  20. public class SecurityConfiguration {
  21. private AuthorizationFilter authorizationFilter;
  22. @Bean
  23. public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
  24. return http
  25. .csrf(AbstractHttpConfigurer::disable)
  26. .cors(Customizer.withDefaults())
  27. .exceptionHandling(Customizer.withDefaults())
  28. .sessionManagement(sessionManagementConfigurer -> sessionManagementConfigurer.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
  29. .authorizeHttpRequests(authorizationRegistry -> authorizationRegistry
  30. .requestMatchers("/").permitAll()
  31. .anyRequest().authenticated())
  32. .addFilterBefore(authorizationFilter, UsernamePasswordAuthenticationFilter.class)
  33. .formLogin(httpSecurityFormLoginConfigurer -> httpSecurityFormLoginConfigurer.defaultSuccessUrl("/", true))
  34. .logout(httpSecurityLogoutConfigurer -> httpSecurityLogoutConfigurer.logoutSuccessUrl("/"))
  35. .build();
  36. }
  37. @Bean
  38. public AuthenticationManager authenticationManager(AuthenticationConfiguration configuration) throws Exception {
  39. return configuration.getAuthenticationManager();
  40. }
  41. @Bean
  42. public PasswordEncoder passwordEncoder() {
  43. return new BCryptPasswordEncoder();
  44. }
  45. }