Spring 기반의 애플리케이션의 보안(인증,권한,인가 등)을 담당하는 스프링 하위 프레임 워크이다.
Filter와 Interceptor의 차이는 적용 시기에 차이가 있다.
Filter는 DispatcherServlet 전에 작업을 수행하고,
Interceptor는 DispatcherServlet과 Controller 사이에 있어, Controller 호출 전과 후에 수행한다.

클라이언트 로그인 요청
AuthenticationFilter에서 인증을 처리한다.
아이디와 비밀번호를 추출해서 usernamePasswordAuthenticationToken발급한다.
AuthenticationFilter는 AuthenticationManager에게 인증 객체 전달한다.
AuthenticationManager는 인증을 담당하기 때문에 올바른 유저인지 확인
인증을 위해 AuthenticationProvider에게 인증 객체 전달
전달받은 인증 객체의 정보를 UserDetailService에 전달한다.
AuthenticationProvider가 UserDetailService에게 인증 객체 전달.
UserDetailService는 전달 받은 사용자 정보를 통해 DB에서 사용자를 조회하고 UserDetails 객체를 생성하고 반환한다.

UserDeatils 객체를 AuthenticationProvider에게 전달한다.
ProviderManager에 권한을 담은 검증된 인증 객체 전달한다.
AuthenticationProvider는 UserDetails를 인증해서 성공하면 ProviderManager에게 인증 객체 전달한다.
검증된 인증 객체를 AuthenticationFilter에 전달한다.
검증된 인증 객체를 SecurityContextHolder의 SecurityContext에 저장한다.
SecurityContextHolder는 Authenitaction 객체를 저장하는 SecurityContext를 포함한다.
- 사용자 식별 데이터를 의미하는 principal
- 암호를 의미하는 credentail
- 권한을 의미하는 authorities 를 포함한다.