본문 바로가기

Javascript

[생활코딩: OAuth - 4편] resourceOwner(유저)의 동의를 받는 과정

이번시간에는 리소스 오너의 승인을 받는 과정에 대해서 알아보자. 

 

리소스서버와 클라이언트는 clientID, clientSercet, redirectURI 이 3가지 정보를 알게 된다. 

그리고 client는 redirectURI 페이지를 준비해놓고 기다려야 한다. 

 

'리소스 서버가 가지고 있는 기능이 4개다' 라고 했을 때, client가 resource server의 모든 기능이 필요한 것이 아니라, 

b,c에 해당하는 2개의 기능만 필요하다면, 최소한의 기능에 대해서만 인증을 받으면 된다. 

이런 상황일 때, 어떤 일이 일어나는 것일까? 

 

 

resourceOwner(유저)는 우리의 어플에 접속할 것이다. 이 접속 과정에서 우리가 리소스 서버를 사용해야할 기능이 있다. 

페이스북에 글을 적는다던지, 구글 캘린더에 기록을 한다던지. 등등.

 

그러면 우리는 아래와 같은 화면을 보여주게 된다. 

이 화면의 의미는 이러이러한 기능을 사용하기 위해서는, 이러한 정보와 동의가 필요하다는 이야기를 하는 것이다. 

여기 나와있는 버튼은 별거 아니다. 아래의 주소로 보내주기만 하면 되는 것이다.

클라이언트의 아이디와, 우리가 사용할 기능(scope), 리다이렉트uri 이 3가지만 적어놓으면 된다. 

 

주소 상세내용 

구글 oauth에 보내는 주소를 상세히보면, 리다이렉트와, 스코프, 클라이언트 아이디 이 3가지가 있는 것을 볼 수 있다. 

 

 

resourceOwner(유저)가 resourceServer(구글,페북 등)로 접속을 하게 되면 아래의 절차를 거친다. 

 

1. resourceOwner(유저)가 현재 로그인 되어 있는지 아닌지를 확인하고,

2. 로그인이 되어 있지 않으면 로그인 화면을 보여준다. 

3. 로그인을 했다면, 그제서야 화면을 보여주고, 

4. 클라이언트 아이디값과 같은 값이 있는지 확인하고, 그 다음에 리다이렉트 uri값을 확인한다. 이 두가지가 같은지 확인을 하고 나서, 

5. 그 다음에 스코프에 지정한 기능들을 유저로 하여금 사용하는 것에 동의할 것인지에 대한 페이지를 표시해주게 된다.

위의 사진과 같이 이러이러한 기능들을 허용할 것인지를 물어본다. 

 

허용버튼을 누르면 허용했다는 정보를 resourceServer(구글,페북 등)로 전송하게 된다. 

그러면 이제 resourceServer는 "user id:1은 스코프 b,c를 사용하는 것에 동의를 했다" 라는 정보를 저장하게 된다. 

 

이렇게 resourceOwner(유저)의 동의를 구하는 과정을 거쳤다. 

그 다음에는 리소스 서버가 실제로 어떻게 인증을 처리하는지 알아보자.