
전반적인 스프링 시큐리티 동작 원리에 대해 알아보자

이전 포스팅에 이어서, DelegatingFilterProxy와 FilterChainProxy에 대해 조금 더 상세히 알아보자.

스프링 시큐리티 의존성을 추가하면 기본적으로 DefaultSecurityFilterChain이 하나 등록된다. 해당 SecurityFilterChain을 알아보기 전에, 커스텀 SecurityFilterChain을 등록하는 방법을 알아보자.

SecurityContextHolder에 대해 알아보자

SecurityFilterChain에 속한 각각의 필터를 알아보기 전에, 필터의 전반적인 구조를 살펴보자.

대부분의 필터는 GenericFilterBean, OncePerRequestFilter 두 가지의 추상 클래스를 기반으로 만들어지기 때문에, 두 추상 클래스에 대해 좀 더 자세히 알아보도록 하자.

SecurityFilterChain은 스프링 시큐리티의 보안, 인증/인가와 같은 주요 로직을 담당한다. SecurityFilterChain 내부에 N개의 필터를 구성하여 각각의 필터가 하나의 로직 (로그인, 로그아웃, 인가 등) 수행의 시작점이 된다.

DefaultSecurityFilterChain에 기본적으로 등록되는 필터로 두 번째에 위치하는 WebAsyncManagerIntegrationFilter에 대해 알아보자.

DefaultSecurityFilterChain에 기본적으로 등록되는 필터로 세 번째에 위치하는 SecurityContextHolderFilter에 대해 알아보자.

DefaultSecurityFilterChain에 기본적으로 등록되는 필터로 각각 5번째, 6번째에 위치하는 CorsFilter, CsrfFilter에 대해 알아보자.

DefaultSecurityFilterChain에 기본적으로 등록되는 필터로, 일곱 번째에 위치하는 LogoutFilter에 대해 알아보자.

DefaultSecurityFilterChain에 기본적으로 등록되는 필터로, 여덟 번째에 위치하는 UsernamePasswordAuthenticationFilter에 대해 알아보자.

DefaultLoginPageGeneratingFilter, DefaultLogoutPageGeneratingFilter에 대해 알아보자.

DefaultSecurityFilterChain에 기본적으로 등록되는 필터로 열한 번째에 위치하는 BasicAuthenticationFilter에 대해 알아보자.

RequestCacheAwareFilter, SecurityContextHolderAwareRequestFilter, AnonymousAuthenticationFilter, ExceptionTranslationFilter에 대해 알아보자.

DefaultSecurityFilterChain에 기본적으로 등록되는 필터로 마지막에 위치하는 AuthorizationFilter에 대해 알아보자.