1. Authentication 구조
-
Image로 대처

2. Authentication 구조 용어정리
- Spring에서 Login을 한다는 것은 SecurityContent가 Authenticated가 True인 Authentication Object를 갖고 있는 State(상태)를 말함(✔**[주의] Authintication이 AnonymousAuthentication Token이 아니여야함!**)
- SecurityContextHolder : 인증을 보관하는 보관소 역할을 하며, Authentication을 갖고 잇는 SecurityContext를 보관함
- AuthenticationProvider : Authentication을 제공하며 여러개가 존재할 수 있음을 말함
- AuthenticationManager : AuthenticationProvider를 관리하는 Interface를 말함
- ProviderManager : AuthenticationManager를 구현한다는 의미임
- Authentication : 권한의 정보와 인증 대상에 대한 Principal(접근 주체), Credential(비밀번호)의 정보를 갖는 Interface임
3. Authentication의 사용코드 의미
- Set <GrantedAuthority> authorities : 인증된 권한 정보 목록을 말함
- principal : 인증 대상에 관한 정보로 User의 ID or User Object가 Save됨을 말함
- credentials : 인증 확인을 위한 정보로 주로 Password가 옴을 말함(✔**[주의]** 인증 후 보안을 위해 삭제해줘야함!)
- details : 필요한 정보로 IP, Session Info(세션 정보), 기타 인증요청에서 사용했던 정보들이 들어감을 말함
- boolean authenticated : 인증이 되었는지를 체크해주는 역할임
4. Authentication을 제공하는 Filter
- UsernamePasswordAuthenticationFilter : Form Login을 처리해줌
- OAuth2LoginAuthenticationFilter : 소셜 Login을 처리해줌
- RememberMeAuthenticationFilter : remember-me *Cookie Login을 처리해줌
- Cookie?
- Client가 어떠한 Web Site를 방문할 경우, Site가 사용하고 있는 Server를 통해 Client의 브라우저에 설치되는 작은 기록 정보 File을 말함
- AnonymousAuthenticationFilter : Login하지 않았다는 것을 인증해줌