Client
Resource Server 를 사용하는 주체. 내가 구현하게 될 어플리케이션
Resource Owner
Resource Server 에 인증되어 있는 사용자. 내가 구현한 어플리케이션을 사용 할 사용자
Resource Server
데이터를 가지고 있는 서버. Google, Facebook, Twitter
내가 구현 할 어플리케이션(이하 Client)이 Resource Server 를 사용하기 위해서는 등록 이라는 절차를 거쳐야 한다. Facebook Developer, Google Developer 와 같은 사이트에서 진행한다.
등록 과정을 거치게 되면, Client 와 Resource Server 는 아래 3가지를 공유하게 된다.
Resource Owner는 Client를 통해 구글 캘린더를 이용하려고 한다면, Client는 Resource Owner 에게 인증화면은 전송한다.
Sign in with Google 버튼을 클릭하게 되면 Resource 서버는 Resource Owner가 인증되어 있는지 확인하고 인증이 되어있지 않으면 로그인 화면을 전송한다.
Resource Owner 가 로그인에 성공을 하면 Resource
로그인에 성공을 하면 Resource Server는 link 로 넘어온 client_id 의 값과 가지고 있던 Cliend ID 를 확인하고 맞다면 redirect URL 까지 확인하여 다음 작업으로 넘어간다.
다음 작업으로, Resource Server 는 Resource Owner 에게 Scope 를 확인 하는 창을 띄어준다. 여기서 Scope는 Client가 Resource Server 에서 사용할 자원들을 말한다.
Resource Owner가 허용을 하게 되면, Resource 서버는 아래의 정보를 추가로 가지게 된다.
Resource Server 는 전달받은 code를 통해 client id, client secert, redirect uri 를 검사한다.
9 번의 절차가 끝나면 Resource Server accessToken 을 생성한다. 그리고 중복 인증을 피하기 위해 Authorization Code를 제거한다.
accessToken의 수명을 그리 길지 못하다. 짧게는 1시간 길게는 몇일 정도로 설정되어 있다. accessToken의 수명이 모두 끝나면 더 이상 Resource Server에 접근 할 수 없게되고, 위의 1~10번의 과정을 다시 거쳐야 한다.
이 과정을 생략하기 위해 필요한 것이 Refresh Token 이다.
(출처: https://docs.wso2.com/display/IS530/Refresh+Token+Grant)