Untitled
package hu.kantasp.springBoot; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; 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.core.userdetails.UserDetailsService; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.AuthenticationFailureHandler; import org.springframework.security.web.authentication.AuthenticationSuccessHandler; import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; import org.springframework.security.web.csrf.CsrfTokenRepository; import org.springframework.security.web.csrf.HttpSessionCsrfTokenRepository; @Configuration @EnableWebSecurity public class SecurityConfig { @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } @Bean public CsrfTokenRepository csrfTokenRepository() { return new HttpSessionCsrfTokenRepository(); } @Bean public UserDetailsService userDetailsService() { return new CustomUserDetailsService(); } @Bean public AuthenticationSuccessHandler customAuthenticationSuccessHandler() { return new CustomAuthenticationSuccessHandler(); } @Bean public LogoutSuccessHandler customLogoutSuccessHandler() { return new CustomLogoutSuccessHandler(); } @Bean public AuthenticationFailureHandler customAuthenticationFailureHandler() { return new CustomAuthenticationFailureHandler(); } @Bean public JwtTokenProvider jwtTokenProvider() { return new JwtTokenProvider(); } @Bean public FilterRegistrationBean<JwtCookieFilter> jwtCookieFilterRegistration(JwtCookieFilter jwtCookieFilter) { FilterRegistrationBean<JwtCookieFilter> registrationBean = new FilterRegistrationBean<>(); registrationBean.setFilter(jwtCookieFilter); // Konstruktor-injektálás itt registrationBean.addUrlPatterns("/*"); // Apply to all URL patterns return registrationBean; } @Bean public WebhookVerifier webhookVerifier() { return new WebhookVerifier(); } @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .csrf((csrf) -> csrf .ignoringRequestMatchers("/api/wooSell", "/api/csrf-token") .csrfTokenRepository(new HttpSessionCsrfTokenRepository())) .authorizeHttpRequests(authz -> authz .requestMatchers("/admin/**").hasRole("ADMIN") .requestMatchers("/superuser/**").hasRole("SUPERUSER") .requestMatchers("/login", "/assets/**", "/api/csrf-token", "/api/users", "/api/wooSell").permitAll() .anyRequest().authenticated() ) .sessionManagement(session -> session .sessionCreationPolicy(SessionCreationPolicy.STATELESS) // Session kezelés kikapcsolása ) .formLogin(form -> form .loginPage("/login") .successHandler(customAuthenticationSuccessHandler()) .failureHandler(customAuthenticationFailureHandler()) .permitAll() ) .userDetailsService(userDetailsService()); return http.build(); } }
Leave a Comment