Update SecurityConfig.java

spring boot 2.7 버전 업그레이드로 인한 deperated된 소스 처리
This commit is contained in:
lucki3377
2023-05-31 16:25:35 +09:00
committed by GitHub
parent 18ad94ec8a
commit 50d19be98f

View File

@@ -2,12 +2,13 @@ package org.egovframe.cloud.userservice.config;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.egovframe.cloud.userservice.service.user.UserService; import org.egovframe.cloud.userservice.service.user.UserService;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.context.annotation.Bean;
import org.springframework.security.authentication.AuthenticationManager;
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.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.web.SecurityFilterChain;
import static org.egovframe.cloud.common.config.GlobalConstant.SECURITY_PERMITALL_ANTPATTERNS; import static org.egovframe.cloud.common.config.GlobalConstant.SECURITY_PERMITALL_ANTPATTERNS;
@@ -31,11 +32,15 @@ import static org.egovframe.cloud.common.config.GlobalConstant.SECURITY_PERMITAL
*/ */
@RequiredArgsConstructor @RequiredArgsConstructor
@EnableWebSecurity // Spring Security 설정들을 활성화시켜 준다 @EnableWebSecurity // Spring Security 설정들을 활성화시켜 준다
public class SecurityConfig extends WebSecurityConfigurerAdapter { public class SecurityConfig {
private final TokenProvider tokenProvider; private final TokenProvider tokenProvider;
private final UserService userService; private final UserService userService;
private final BCryptPasswordEncoder bCryptPasswordEncoder;
@Bean
AuthenticationManager authenticationManager(AuthenticationConfiguration authConfiguration) throws Exception {
return authConfiguration.getAuthenticationManager();
}
/** /**
* 스프링 시큐리티 설정 * 스프링 시큐리티 설정
@@ -43,45 +48,34 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
* @param http * @param http
* @throws Exception * @throws Exception
*/ */
@Override @Bean
protected void configure(HttpSecurity http) throws Exception { public SecurityFilterChain configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.headers().frameOptions().disable()
.and()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS) // 토큰 사용하기 때문에 세션은 비활성화
.and()
.authorizeRequests()
.antMatchers(SECURITY_PERMITALL_ANTPATTERNS).permitAll()
.anyRequest().access("@authorizationService.isAuthorization(request, authentication)") // 호출 시 권한 인가 데이터 확인
.and()
.addFilter(getAuthenticationFilter())
.logout()
.logoutSuccessUrl("/");
}
/** AuthenticationManager authenticationManager = authenticationManager(http.getSharedObject(AuthenticationConfiguration.class));
* 로그인 인증정보를 받아 토큰을 발급할 수 있도록 필터를 등록해준다.
*
* @return
* @throws Exception
*/
private AuthenticationFilter getAuthenticationFilter() throws Exception {
return new AuthenticationFilter(authenticationManager(), tokenProvider, userService);
}
/** /**
* 인증 관련 - 로그인 처리 * 로그인 인증정보를 받아 토큰을 발급할 수 있도록 필터를 등록해준다.
* DB 에서 조회하여 일치하는지 체크한다. *
* * @return
* @param auth * @throws Exception
* @throws Exception */
*/ AuthenticationFilter authenticationFilter = new AuthenticationFilter(authenticationManager, tokenProvider, userService);
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception { http
// userService.loadUserByUsername 메소드 .csrf().disable().headers().frameOptions().disable()
auth.userDetailsService(userService).passwordEncoder(bCryptPasswordEncoder); .and()
} .sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS) // 토큰 사용하기 때문에 세션은 비활성화
.and()
.authorizeRequests()
.antMatchers(SECURITY_PERMITALL_ANTPATTERNS).permitAll()
.anyRequest().access("@authorizationService.isAuthorization(request, authentication)") // 호출 시 권한 인가 데이터 확인
.and()
.addFilter(authenticationFilter)
.logout()
.logoutSuccessUrl("/");
return http.build();
}
} }