
- Http Request, 즉 로그인 요청을 보낼 때 requstBody(Post) 요청으로 보냄
- 예를 들어 아이디는 “uesr01” 비밀번호는 “1234” 이런식으로 객체로 보냄
- 시큐리티에 존재하는 수많은 필터 중 AuthenticationFilter를 거쳐 UsernamePasswordAuthenicationToken을 발급
- 즉 이름 그대로 유저 이름과 비밀번호 인증에 대한 토큰을 발급 해줌
- 발급한 토큰을 ProviderManager를 구현하고 있는 AuthenticationManager에게 줌
- manager는 Provider에게 토큰을 넘겨줌
- UserDetailsService는 개발자가 작성한 서비스 로직이며 provider는 처음에 받아온 “user01” 즉 아이디만(비밀번호는 신경X)가지고 Service에서 DB와 소통하며 유저 정보를 찾아옴
- 5단계와 6단계에서는 오직 ID에 대한 값만 신경쓰며 PW는 신경쓰지 않음
- DB에서 조회한 정보를 통해 유저 객체를 생성함 → 권한 및 암호화 된 비밀번호도 포함해서 생성
- 유저 객체를 반환할 때 DB에서 조회한 암호화 된 패스워드와 처음 View에서 받아온 비밀번호를 비교 → 이 단계에서 인증과 인가가 확인됨
최종적으로, 반환된 객체 정보를 가지고 Authentication 까지 전달됨