본문 바로가기
Back-End/Spring

왜 Spring Security 의존성을 추가 하기만 해도 모든 엔드포인트에 인증과정이 요구되는가

by blackjack_96 2024. 10. 22.

Spring Security 의존성을 추가하기만 했는데

기존에 인증 없이도 동작하던 endpoint에 요청을 하기만 해도

Default Login Page로 리다이렉션이 된다.

 

 

Spring Security라는 Dependency를 build.gradle 혹은 pom.xml에 추가하기만 해도

Spring boot의 자동 구성 기능(Auto-configuration) 기능에 의하여

Defualt Security Filter Chain이 자동으로 등록이 되는데, 

이 Filter Chain이 등록되며 웹의 동작에 영향을 미치기 때문이다.

 

프로젝트에서 Shift를 두 번 누르고

SpringBootWebSecurityConfiguration을 입력해 검색하자.

그러면 다음 코드를 보게 될 것이다.

 

@Configuration(proxyBeanMethods = false)
@ConditionalOnDefaultWebSecurity
static class SecurityFilterChainConfiguration {

    @Bean
    @Order(SecurityProperties.BASIC_AUTH_ORDER)
    SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws Exception {
       http.authorizeHttpRequests((requests) -> requests.anyRequest().authenticated());
       http.formLogin(withDefaults());
       http.httpBasic(withDefaults());
       return http.build();
    }

}

 

바로 이 Filter Chain이 WAS 앞단에 추가되며

각종 Request에 대한 검증과정이 들어가는 것이다.

 

기본적으로, 모든 요청을 캡쳐한 후 인증 되었는지 확인하고,

인증되지 않았다면 인증을 요구하는 로직이 메소드의 첫 라인에 포함되어 있다. 

이 코드로 인해 제목에서 설명한 바와 같은 현상이 발생하는 것이다.