Skip to content

Commit

Permalink
Chore: CORS 문제 관련 코드 수정
Browse files Browse the repository at this point in the history
CORS 설정 중복 적용 제거
  • Loading branch information
gkdudans committed Nov 28, 2024
1 parent b14d81f commit 1af3769
Showing 1 changed file with 9 additions and 49 deletions.
Original file line number Diff line number Diff line change
@@ -1,29 +1,22 @@
package org.bookwoori.core.global.config;

import java.util.Arrays;
import lombok.RequiredArgsConstructor;
import org.bookwoori.core.global.jwt.CustomAccessDeniedHandler;
import org.bookwoori.core.global.jwt.CustomAuthenticationEntryPoint;
import org.bookwoori.core.global.jwt.JwtAuthenticationFilter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.security.servlet.PathRequest;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpStatus;
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
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.WebSecurityCustomizer;
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
import org.springframework.security.config.http.SessionCreationPolicy;
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.UsernamePasswordAuthenticationFilter;
import org.springframework.security.web.authentication.logout.HttpStatusReturningLogoutSuccessHandler;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.CorsConfigurationSource;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;

@Configuration
@EnableWebSecurity
Expand All @@ -37,59 +30,19 @@ public class SecurityConfig {
@Value("${cloud.aws.ec2.ip}")
private String host;

@Bean
public WebSecurityCustomizer webSecurityCustomizer() {
return web -> web.ignoring()
.requestMatchers("/error", "/favicon.ico",
"/swagger-ui/**", "/swagger-ui.html", "/v3/api-docs", "/v3/api-docs/**",
"/core/v3/api-docs", "/core/v3/api-docs/**")
.requestMatchers(PathRequest.toStaticResources().atCommonLocations());
}

@Bean
public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOriginPatterns(Arrays.asList(
"http://localhost:*",
"https://localhost:3000",
"http://gateway-app:8000",
host,
"https://api.bookwoori.p-e.kr",
"https://d1b8jphm7kfx0c.cloudfront.net",
"https://www.bookwoori.site/"
));
configuration.setAllowedMethods(
Arrays.asList("GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"));
configuration.addAllowedHeader("*");
configuration.addExposedHeader("Authorization");
configuration.addExposedHeader("Set-Cookie");
configuration.setAllowCredentials(true);

UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}

@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}

@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.csrf(AbstractHttpConfigurer::disable)
.cors(cors -> cors.configurationSource(corsConfigurationSource()))
.formLogin(AbstractHttpConfigurer::disable)
.httpBasic(AbstractHttpConfigurer::disable)
.sessionManagement(
config -> config.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
.logout(AbstractHttpConfigurer::disable)
.authorizeHttpRequests(auth -> auth
.anyRequest().permitAll())
.authorizeHttpRequests(auth -> auth.anyRequest().permitAll())
.addFilterBefore(new JwtAuthenticationFilter(),
UsernamePasswordAuthenticationFilter.class)
.exceptionHandling((exceptions) -> exceptions
.exceptionHandling(exceptions -> exceptions
.authenticationEntryPoint(customAuthenticationEntryPoint)
.accessDeniedHandler(customAccessDeniedHandler))
.logout(logout -> logout
Expand All @@ -98,4 +51,11 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
.logoutSuccessHandler(new HttpStatusReturningLogoutSuccessHandler(HttpStatus.OK)));
return http.build();
}

// CORS 설정 제거
@Bean
public CorsConfigurationSource corsConfigurationSource() {
return null; // Core 서비스에서 CORS 설정 비활성화
}

}

0 comments on commit 1af3769

Please sign in to comment.