Development
[Spring Boot] 초기 프로젝트 403 error request 처리 실패 해결
12기통엔진
2024. 7. 20. 20:42
반응형
문제
Spring Boot 앱이 정상적으로 로드된 뒤에
2024-07-20T13:50:13.315+09:00 INFO 93019 --- [demo] [ restartedMain] cohttp://m.example.demo.DemoApplication : Started DemoApplication in 2.822 seconds (process running for 3.144)
포스트맨을 이용해 GET /health request를 보내보면
2024-07-20T13:50:17.072+09:00 INFO 93019 --- [demo] [nio-4000-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2024-07-20T13:50:17.072+09:00 INFO 93019 --- [demo] [nio-4000-exec-2] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2024-07-20T13:50:17.075+09:00 INFO 93019 --- [demo] [nio-4000-exec-2] o.s.web.servlet.DispatcherServlet : Completed initialization in 3 ms
response없이, dispatcherServlet을 초기화한다는 로그만 남는다.
특히 postman 쪽에서 확인해보면 403 error를 확인할 수 있다.
원인
Spring Boot Application에 포함된 Security Auto Config 클래스의 실행으로 security filter가 동작해 인가 관련 에러가 발생한 것.
자체적인 인가 로직을 보유하고있다면 Security Auto Config 클래스를 SpringBootApplication에서 제외시켜도 좋고,
Security Auto Config를 구상해 반드시 Security filter를 통과하도록 구현해놓고 차차 인가 로직을 구현해도 좋을 것이다.
해결
1. security configuration 등록 제외
{project_name}Application.java 파일의 Application 클래스의 데코레이터에 정의된
@SpringBootApplication 데코레이터를 수정한다.
...
@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
public class {app_name}Application {
...
}
exclude=SecurityAutoConfiguration.class 옵션으로 해당 클래스를 제거하자.
2. SecurityConfig
SecurityConfig 클래스를 정의하고, 반드시 필터를 통과하도록 구상한다.
../SecurityConfig.java
...
@Configuration
@EnableWebSecurity(debug = true)
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.csrf(csrf -> csrf.disable())
.authorizeHttpRequests(requests -> requests.anyRequest().permitAll());
return http.build();
}
}
반응형