10월 19일
스프링 시큐리티는 인증(나는 누구인가?)과 인가(권한이 어디까지 인가?)를 담당하는 보안관련 스프링 하위 프레임 워크이다.

(1)유져가 form에 로그인 정보를 입력하고 http메세지로 인증요청을 보냄
(2)AuthenticationFilter의 구현체인 UsernamePasswordAuthenticationFilter로 보내어 사용자가 보낸 아이디와 패스워드를 인터셉하여 유효성을 체크하고,
진짜 인증을 담당하는 AuthenticationManager 인터페이스(구현체 – ProviderManager)에게 보내기 위해 인증토큰(UsernamePasswordAuthenticationToken)을 만들어 위임한다.
(3)인증토큰(UsernamePasswordAuthenticationToken)을 AuthenticationManager(구현체는 Provider Manager)에게 전달한다.
(4)실제 인증을 할 AuthanticationProvider에게 인증토큰(UsernamePasswordAuthenticationToken)을 다시 전달함
(5)인증절차가 시작되면 AuthenticationProvider 인터페이스가 실행됨
->DB에 있는 이용자 와 화면에 입력한 정보가 맞는지 비교하게 됨
(6)입력한 정보는 Authentication객체(UsernamePasswardAuthenticationToken)으로 전달을 받았고, DB에 있는 회원정보를 꺼내기 위해서 UserDetailsService 인터페이스를 사용하여 DB에있는 정보를 UserDetails객체에 담아 가져옴
(7)만약 회원정보가 없거나 일치 하지 않으면 예외를 던지고, 일치하면 Authentication객체를 리턴함.
(10)인증이 완료된 이후 Authentication객체(UsernamePasswordAuthenticationToken)를 SecurityContextHolder에 담은이후 AuthenticationSuccessHandle를 실행한다.
인증을 실패하면 AuthenticationFailureHandler를 실행한다.