Spring Security의 Filter는 HTTP 요청을 가로채서
인증(Authentication)과 인가(Authorization)를 처리하는 핵심적인 역할을 한다.
스프링 시큐리티는 자체적인 필터 체인을 가지고 있으며,
이를 통해 요청이 컨트롤러(Controller)로 전달되기 전에 보안 검사를 수행한다.
스프링 시큐리티의 필터 체인(Security Filter Chain)
스프링 시큐리티는 여러 개의 서블릿 필터(Servlet Filter)를 체인 형태로 구성하여 요청을 보호한다.
핵심적인 필터는 SecurityFilterChain 인터페이스를 구현하는 여러 개의 필터로 이루어져 있다.
📌 스프링 시큐리티의 전체 필터 목록
WebAsyncManagerIntegrationFilter | 비동기 요청에서도 SecurityContext를 유지 |
SecurityContextPersistenceFilter | 요청이 시작될 때 SecurityContext를 로드하고 요청이 끝나면 저장 |
HeaderWriterFilter | 보안 관련 HTTP 헤더(CSP, HSTS 등) 추가 |
CorsFilter | CORS 정책 적용 |
LogoutFilter | 사용자의 로그아웃 처리 |
UsernamePasswordAuthenticationFilter | 아이디/비밀번호 로그인 인증 처리 |
OAuth2AuthorizationRequestRedirectFilter | OAuth2 인증 요청 리디렉션 처리 |
OAuth2LoginAuthenticationFilter | OAuth2 로그인 인증 처리 |
Saml2WebSsoAuthenticationFilter | SAML2 SSO 인증 처리 |
BearerTokenAuthenticationFilter | JWT 및 Bearer Token 인증 처리 |
BasicAuthenticationFilter | HTTP Basic 인증 처리 |
SecurityContextHolderFilter | SecurityContextHolder를 업데이트 |
AnonymousAuthenticationFilter | 인증되지 않은 사용자에게 ROLE_ANONYMOUS 권한 부여 |
RememberMeAuthenticationFilter | "로그인 유지" 기능 처리 (쿠키 기반 인증) |
SessionManagementFilter | 세션 고정 공격 방지 및 동시 세션 제어 |
ConcurrentSessionFilter | 중복 로그인 감지 및 세션 무효화 |
RequestCacheAwareFilter | 인증 후 이전 요청을 기억하여 리다이렉트 |
SecurityContextHolderAwareRequestFilter | HttpServletRequest가 SecurityContext의 인증 객체를 활용할 수 있도록 래핑 |
ExceptionTranslationFilter | 인증 또는 권한 문제 발생 시 예외 처리 및 리디렉션 |
DefaultLoginPageGeneratingFilter | 기본 로그인 페이지 제공 |
DefaultLogoutPageGeneratingFilter | 기본 로그아웃 페이지 제공 |
AuthorizationFilter | 요청에 대한 권한 검사 수행 |
FilterSecurityInterceptor | 최종적으로 요청을 보호하고 접근 제어 수행 |
Spring Security의 Filter에 대해서 찾아봤는데 정말 다양하다.
상황에 맞게 어떤 Filter를 사용해야 하는지 정확하게 알아볼 필요가 있다.
또한 인증 기능에 따라 사용되지 않는 필터를 대체하는 경우에
어떤 방식으로 Filter를 작성해야 하는지 공부할 필요가 있다.
'Java > SpringBoot' 카테고리의 다른 글
영속성(Persistence)이란 무엇일까? (0) | 2025.02.03 |
---|---|
자바의 Filter에 대해서 (0) | 2025.01.31 |
인증과 인가 (0) | 2025.01.30 |
JWT 로그인 테스트-4 (0) | 2025.01.22 |
JWT 로그인 테스트-3 (0) | 2025.01.21 |