Browser > Controller 직접 접근
Spring Security 6에서는 기본적으로 아래와 같은 순서로 필터들이 적용됩니다. 단, 사용자가 설정한 옵션이나 적용한 인증 방식(OAuth2, X.509, Bearer Token 등)에 따라 활성화되는 필터가 달라질 수 있으므로, 프로젝트 환경에 맞게 실제 체인을 확인하는 것이 좋습니다.
WebAsyncManagerIntegrationFilter
비동기 요청(Async Request)의 보안 컨텍스트 연동을 처리합니다.
SecurityContextPersistenceFilter
요청 시작 시 SecurityContext를 복원하고, 응답 후 이를 저장하여 후속 요청에 활용할 수 있도록 합니다.
HeaderWriterFilter
보안 관련 HTTP 응답 헤더(예: X-Content-Type-Options, X-XSS-Protection 등)를 추가합니다.
CorsFilter (구성된 경우)
Cross-Origin Resource Sharing(CORS) 정책에 따른 요청을 처리합니다.
CsrfFilter
CSRF(Cross Site Request Forgery) 공격을 방지하기 위한 검증을 수행합니다.
LogoutFilter
로그아웃 요청을 처리하여 세션 종료 및 관련 보안 처리를 수행합니다.
OAuth2AuthorizationRequestRedirectFilter (OAuth2 클라이언트 사용 시)
OAuth2 로그인 흐름에서 인증 요청을 리다이렉트 합니다.
OAuth2LoginAuthenticationFilter (OAuth2 로그인 사용 시)
OAuth2 로그인 인증 처리를 담당합니다.
X509AuthenticationFilter (X.509 인증 사용 시)
클라이언트 인증서 기반 인증을 수행합니다.
PreAuthenticatedProcessingFilter (사전 인증 사용 시)
이미 인증된(또는 외부에서 인증된) 사용자 정보를 기반으로 인증을 처리합니다.
BearerTokenAuthenticationFilter (Bearer 토큰 인증 사용 시)
Bearer 토큰을 이용한 인증을 처리합니다.
UsernamePasswordAuthenticationFilter 또는 AuthenticationFilter (formLogin 사용 시)
사용자 이름과 비밀번호를 이용한 폼 기반 로그인 인증을 수행합니다.
Spring Security 6에서는 상황에 따라 새로운 AuthenticationFilter가 적용될 수 있습니다.
.formLogin(formLogin -> formLogin.disable()) 적용 시에만 활성화
DefaultLoginPageGeneratingFilter
커스터마이징하지 않은 경우, 기본 로그인 페이지를 자동으로 생성합니다.
ConcurrentSessionFilter (동시 세션 제어 사용 시)
동일 사용자의 동시 세션 수를 제어합니다.
ExceptionTranslationFilter
필터 체인 내에서 발생한 예외를 처리하고, 인증이 필요한 경우 적절한 리다이렉션(예: 로그인 페이지) 등을 수행합니다.
FilterSecurityInterceptor
최종적으로 URL 접근 권한을 검사하여 인가(Authorization) 여부를 결정합니다.
이와 같이 Spring Security 6의 기본 필터 체인은 위와 같은 순서로 동작하며, 실제 프로젝트에서는 설정에 따라 일부 필터가 생략되거나 추가될 수 있습니다.