이번 포스팅에서는 지난포스팅보다 좀 더 구체적인 이야기를 해보려고 한다.
이 내용은 생활코딩 영상을 정리한 내용이며 아래 영상에서 확인할 수 있습니다.
(https://youtu.be/hm2r6LtUbk8)
1) 사용자 동의 과정
구글로그인을 시도할 경우 사용자 동의과정을 거친다.
- 로그인 성공 시 Resource Server에서는 자신이 갖고있는 Client ID의 Redirect URI가 같은지 확인한다.
- URI가 같다면 정보요청을 한다고 안내를 하고, OK버튼을 누르면 정보를 제공하게 된다.
URI가 다르다면 무시한다.
- OK버튼을 누르게 되면 Resource server에 user_id와 scope(동의한 정보의 목록)이 전송된다.
2) 실제 인증 처리
실제 인증 처리는 다음과 같다.
- Resource Server에서 Resource Owner에게 Authorization code를 전송한다.
이 코드는 (https://.../callback?code=1234)와 같이 전송되며 맨 뒤에 붙은 code가 바로 Authorization code이다.
- 이 때 Resource Owner는 이미 승인을 했으므로 거치지 않고 바로 Client로 넘어가서 해당 코드들을 전달해준다.
- Client에서 Resource Server로 (https://.../token/...)이라는 주소에 code, Redirect Uri, Client ID, SECRET 정보들을 담아서 보내준다.
- Resource Server에서는 해당 정보가 일치하면 다음 단계(access token 발급)로 넘어간다.
3) Access Token 발급
- Resource Server, Client에서 Authorization Code를 삭제한다. 👉 다시 인증을 하지 않기 위해서(라고 하는데 잘 모르겠다. Authorization code는 한번만 쓸 수 있고 다시쓰려면 인증을 다시 받아야해서 아닐까? 댓글 아시는 분 plz...)
- Resource Server에서 Access Token을 발급한다.
- Client에서는 Access Token을 보고 이 사람은 user_id가 어떻고, 동의항목(scope)가 어떻고.. 이런 정보를 가지고 있는 사람이구나! 이 사람에게 허용을 해야겠군! 하며 동작한다.