스프링 시큐리티에서 custom한 cors정책을 구현하려면 아래와 같은 코드를 작성하면 된다.
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
...생략...
http.cors().configurationSource(corsConfigurationSource())
...생략...
return http.build();
}
@Bean
public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.addAllowedHeader("*");
config.addAllowedMethod("*");
config.addAllowedOrigin("*");
config.setMaxAge(3600L);
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/api/**",config);
return source;
}
먼저 custom
한 corsSource
를 만들어야 한다. 그러기 위해 CorsConfigurationSource
를 반환한는 빈을 생성하는데 Url
로 정책을 구현하기 위해 UrlBasedCorsConfigurationSource
를 이용한다.
그리고 cors
정책을 구성하기 위한 CorsConfiguration
을 만드는데 위 설정 파일은 모든 헤더, 모든 메소드, 모든 주소에 대하여 허용한다는 의미를 지니고 있다.
설정 구성이 끝나면 UrlBasedCorsConfigurationSource
에 등록하는데 이 때 적용할 주소와 source
를 같이 집어 넣어준다.
위 과정이 끝난 후 구현한 corsSource
를 httpSecurtiy
에 넣어준다.
출처 : 스프링 시큐리티 OAuth2 - Spring Boot 기반으로 개발하는 Spring Security OAuth2