Hello, Freakin world!

스프링 시큐리티 CORS 해결하기 본문

Spring boot/Security

스프링 시큐리티 CORS 해결하기

johnna_endure 2021. 4. 19. 16:12

프로젝트에서 스프링 시큐리티를 사용하는 경우,

WebSecurityConfigurerAdapter 상속 클래스에서 CORS 설정을 추가해야 합니다.

 

 

@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
	...

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .csrf().disable()
                .cors().configurationSource(corsConfigurationSource()).and()

                .authorizeRequests()
                .antMatchers("/login/**", "/hello/**").permitAll()
                .antMatchers(OPTIONS,"/**").permitAll()
                .antMatchers(POST, MEMBER_SERVICE+"/member", MEMBER_SERVICE+"/authentication").permitAll()
                .antMatchers(GET,MEMBER_SERVICE+"/members").hasRole(ADMIN)
                .antMatchers(GET, MEMBER_SERVICE+"/members/{id}").hasRole(USER)
//                .anyRequest().denyAll()
                .and()

                .formLogin()
                .defaultSuccessUrl("http://localhost:8080/");

    }


    @Bean
    CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.addAllowedOrigin("http://localhost:8080");
        configuration.setAllowedMethods(Arrays.asList("GET","POST", "OPTIONS", "PUT","DELETE"));
        configuration.setAllowedHeaders(Arrays.asList("*"));
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }
}

 

위처럼 CorsConfigurationSource 타입의 빈에 허용할 Origin, Method, Header를 설정해서 생성해 위 코드처럼 넣어주면 됩니다.

Comments