|
|
@ -15,6 +15,7 @@ import com.xit.core.oauth2.oauth.handler.TokenAccessDeniedHandler;
|
|
|
|
import com.xit.core.oauth2.oauth.repository.OAuth2AuthorizationRequestBasedOnCookieRepository;
|
|
|
|
import com.xit.core.oauth2.oauth.repository.OAuth2AuthorizationRequestBasedOnCookieRepository;
|
|
|
|
import com.xit.core.oauth2.oauth.JwtTokenProvider;
|
|
|
|
import com.xit.core.oauth2.oauth.JwtTokenProvider;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
|
|
|
import org.springframework.boot.autoconfigure.security.servlet.PathRequest;
|
|
|
|
import org.springframework.context.annotation.Bean;
|
|
|
|
import org.springframework.context.annotation.Bean;
|
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
|
import org.springframework.http.HttpMethod;
|
|
|
|
import org.springframework.http.HttpMethod;
|
|
|
@ -27,6 +28,7 @@ import org.springframework.security.config.annotation.web.builders.WebSecurity;
|
|
|
|
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.annotation.web.configuration.WebSecurityConfigurerAdapter;
|
|
|
|
import org.springframework.security.config.http.SessionCreationPolicy;
|
|
|
|
import org.springframework.security.config.http.SessionCreationPolicy;
|
|
|
|
|
|
|
|
import org.springframework.security.core.context.SecurityContextHolder;
|
|
|
|
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
|
|
|
|
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
|
|
|
|
import org.springframework.web.cors.CorsConfiguration;
|
|
|
|
import org.springframework.web.cors.CorsConfiguration;
|
|
|
|
import org.springframework.web.cors.CorsUtils;
|
|
|
|
import org.springframework.web.cors.CorsUtils;
|
|
|
@ -161,6 +163,14 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
protected void configure(HttpSecurity http) throws Exception {
|
|
|
|
protected void configure(HttpSecurity http) throws Exception {
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @EnableAsync 설정시
|
|
|
|
|
|
|
|
* SecurityContextHolder의 전략을 선택할 수 있다.
|
|
|
|
|
|
|
|
* 기본값은 ThreadLocal 로 동일한 Thread에서만 공유가 가능하다.
|
|
|
|
|
|
|
|
* MODE_INHERITABLETHREADLOCAL : 하위 Thread까지 SecurityContext가 공유된다.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
SecurityContextHolder.setStrategyName(SecurityContextHolder.MODE_INHERITABLETHREADLOCAL);
|
|
|
|
|
|
|
|
|
|
|
|
http
|
|
|
|
http
|
|
|
|
.cors()
|
|
|
|
.cors()
|
|
|
|
.and()
|
|
|
|
.and()
|
|
|
@ -184,6 +194,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
|
|
|
|
// GET, POST 요청시 : OPTIONS preflight 요청 - 실제 서버가 살아있는지를 사전에 확인하는 요청
|
|
|
|
// GET, POST 요청시 : OPTIONS preflight 요청 - 실제 서버가 살아있는지를 사전에 확인하는 요청
|
|
|
|
// Spring에서 OPTIONS에 대한 요청을 막고 있어 OPTIONS 요청이 왔을 때도 오류를 리턴하지 않도록 설정
|
|
|
|
// Spring에서 OPTIONS에 대한 요청을 막고 있어 OPTIONS 요청이 왔을 때도 오류를 리턴하지 않도록 설정
|
|
|
|
.requestMatchers(CorsUtils::isPreFlightRequest).permitAll()
|
|
|
|
.requestMatchers(CorsUtils::isPreFlightRequest).permitAll()
|
|
|
|
|
|
|
|
.requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll()
|
|
|
|
.mvcMatchers(HttpMethod.OPTIONS, "/**").permitAll()
|
|
|
|
.mvcMatchers(HttpMethod.OPTIONS, "/**").permitAll()
|
|
|
|
.antMatchers(
|
|
|
|
.antMatchers(
|
|
|
|
"/",
|
|
|
|
"/",
|
|
|
|