생활코딩
용어 정리
등록 Register
Client가 리소스 서버의 승인을 받는 과정
리소스 서버(GitHub, Google 등)에서 진행된다.
Client ID(클라이언트 식별자), Client Secret(외부에 절대 노출되면 안됨), Authorized redirect URIs(리소스 서버가 권한을 부여하는 과정에서 제공하는 Authorized code를 이곳에 지정한 URL로 보낸다.)
Resource owner의 승인
Resource owner가 Resource server에게 client의 접근을 승인한다는 것을 알려주는과정
Login with Google 과 같은 버튼을 누르는 과정
→ 이 버튼에 링크를 걸어두는데,
→ 로그인이 되어있다면 해당
→ 예를 들어, https://resource.server/?client_id=1&scope=B,C&redirect_uri=https//client/callback
→ 이 주소로 리소스 오너가 리소스 서버로 접속하면, 리소스 서버가 쿼리 파라미터로 넘어온 정보와 등록된 client의 정보(client_id, redirect_uri 등)가 일치하는지 확인한다.
Resource server의 승인
리소스 서버는 전달받은 client의 정보가 등록된 client 인지 확인하기 위해 리소스 오너를 통해 client에게 Authorization code를 전달한다.
리소스 서버가 리소스 오너에게 이런식으로 response를 보낸다.
→ Location: https://client/callback?code=3
→ 리소스 오너는 이 url로 접속하게 되는데 client에게 Authorization code를 전송한다.
→ 클라이언트는 리소스서버에게 곧바로 client_id, Authorization code, client_secret을 포함해서 요청을 보낸다.
→ 리소스 서버는 전송받은 값(Authorization code, client_id, client_secret)을 보고 해당하는 클라이언트에게 발급한 건지 확인한다.
→ 다음 절차인 Access token 발급을 진행한다.
Access Token 발급
리소스 서버는 Authorization code의 값으로 인증을 마쳤기 때문에 이 값을 지운다.
→ access token을 발급한다.
→ access token값을 client에게 전송하고, client는 이 값을 내부적으로 저장한다.
→ client가 이 access token값을 갖고 리소스서버에 전송하면 리소스 서버는 access token값을 확인하고 이에 해당하는 클라이언트와 유저를 확인해서 허용하게 된다.
Refresh token
access token의 수명이 다했을때, 새로운 access token을 발급받는 방법
access token을 통해서 리소스 서버에 접근하려고 하는데, invalid token error 가 발생하면 access token의 수명이 다했다는 것이다.
→ client는 refresh token을 authorization 서버에게 전달해서 access token을 다시 발급받는다.
사실 refresh token 에 대한 방법은 리소스 서버마다 다르다.