
스프링의 HTTP 통신 과정
HttpServletRequest, HttpServletResponse 객체를 생성한다.FilterChain을 실행한다.
FilterChain은 서블릿 영역의 Bean으로 등록된 Filter들을 순차적으로 실행한다.DispatcherServlet으로 전달한다. 이때부터 Spring Context로 전환된다.DispatcherServlet은 URL 기반 라우팅을 통해 Controller로 요청을 전달한다.※ 시큐리티 필터 체인은 스프링 MVC(DispathcerServlet, Controller, @RestControllerAdvice)보다 앞단에 위치한다. 따라서 필터에서 예외가 터지면 MVC 단까지 가지 못한채 에러가 반환된다.

스프링 시큐리티의 시작점, FilterChainProxy
DelegatingFilterProxy 의 구현체를 보면 SecurityFilterChain이 아닌 FilterChainProxy로 되어 있다. FilterChainProxy는 스프링 시큐리티의 시작점이자 핵심 요소로, 여러 SecurityFilterChain을 관리하고, 방화벽 처리, SecurityContext 메모리 관리 등 스프링 시큐리티 과정에 필요한 작업을 수행한다. 위 작업이 완료된 후, FilterChainProxy는 보안 작업을 위해 적절한 SecurityFilterChain을 호출하여 개발자 지정한 보안 Filter들을 순차적으로 실행한다.

LogoutFilter
설정된 로그아웃 URL로 오는 요청을 확인해 로그아웃 처리하는 필터
AnonymoustAuthenticationFilter
필터 호출 시점까지 인증되지 않는 경우 익명 사용자 전용 객체
AnonymoustAuthentication을 만들어 SecurityContext에 넣어주는 필터
OAuth2LoginAuthenticationFilter
OAuth2 로그인 인증을 처리한다. 사용자가 OAuth2 공급자로부터 인증 후 돌아올 때 사용된다.
UsernamePasswordAuthenticationFilter
폼 기반 로그인에서 사용자 아이디와 비밀번호를 인증한다. 로그인 성공 또는 실패 시 이벤트를 발생시킨다. 세션을 막아두면 필터는 동작하지 않는다.
AuthorizationFilter
AuthorizationManager를 사용하여 URL을 통해 사용자의 리소스 접근에 대한 액세스를 제한하는 인증 필터 권한 부여 필터
ExceptionTranslationFilter
요청을 처리하는 중에 발생할 수 있는 예외를 위임 또는 전달하는 필터
AuthorizationFilter