User가 로그인을 통해 인증을 요청한다.
시큐리티 필터가 중간에 인터셉트하여 유효성 검사를 한다.
필터 종류
BasicAuthenticationFilter : HTTP 기본 인증
DigestAuthenticationFilter : HTTP Digest 인증
UserPasswordAuthenticationFilter : 로그인 폼으로 요청
X509AuthenticationFilter : x509 인증 요청
유효성 검사란?
입력된 데이터가 올바른 형식인지 검사하는 과정
클라이언트와 서버 두 군데서 모두 이루어진다.
마찬가지로 필터 과정에 인증 객체 (AuthenticationToken)을 생성한다.
토큰은 AuthenticationManager에게 위임된다.
(AuthenticationManager는 인터페이스이고, 구현은 ProviderManager에서 한다.)
ProviderManager는 AuthenticationProvider에게 인증 목록을 제공하고, 이 AuthenticationProvider에서 실제 인증 과정이 이루어지게 된다.
인증할 객체는 UserDetailsService에 담기고, DB에 있는 정보는 UserDetails에 담긴다.
두 객체를 비교한다.
인증을 성공하면 객체를 반환하고, 실패하면 AuthenticationException이 생긴다.