본문 바로가기
기타

[OAuth 2.0] 2. Resource Owner와 Resource Server의 승인

by soobaaaam 2022. 1. 19.
728x90

1. Resource Owner의 승인

출처 : 생활코딩 강의

Client와 Resource Server(이하 R.S)는 등록 과정 이후 Client ID, Client Secret, redirect URI 값을 알게 된다.

 

예를 들어 R.S가 갖고 있는 기능이 A,B,C,D 총 네 개일 때 clinet가 R.S의 기능 중 A,B 두 개만 필요로 한다면 모든 기능에 대한 인증을 받는 것이 아니라 필요 기능에 해당하는 인증만 받는다.

 

이때, Resource Owner(이하 R.O)는 client에 접속한다. 접속하는 과정에서 R.S를 사용해야 하는 상황이 있다면 client는 R.O에게 사용자의 동의를 구하는 화면을 보여준다.

 

R.O가 R.S에 "https://resource.server/?clinet_id=1&scope=A,B&redirect_uri=https://client/callback" 의 형태를 갖는 주소로 접속을 하게 되면 R.S는 R.O가 현재 로그인되어있는지 여부를 확인한다. R.O가 로그인을 성공하면 R.S는 Client ID값과 같은 것이 있는지 확인하고, 요청받은 주소의 redirect URI값과 자신이 갖고 있는 redirect URI값이 같은지 확인한다. 만약 다르다면 작업을 끝내고, 같다면 R.O에게 scope에 해당하는 번호를 client에 부여할 것인지를 확인하는 메시지를 전송한다. 이를 허용하면 해당 정보가 R.S에게 전송되고 R.S는 "user id=1, scope=a,b" 같은 정보를 저장한다.

 

 

2. Resource Server의 승인

 

출처 : 생활코딩 강의

 

R.O에 대한 허락을 획득했으므로 이제 R.S가 승인을 해줘야 한다.

 

R.S가 승인하기 위해서 accessToken을 발급하기 전에 한 가지 절차가 있는데, 바로 authorization code를 R.S가 R.O에게 "Location: https://client/callback?code=3" 과 같은 형태로 전송하는 것이다.

 

그러면 R.O는 저 주소로 이동하는데 이때 client가 이 code값을 보고 authorization code값을 갖게 된다.

 

위 과정이 끝나면 이제 client는 R.O를 거치지 않고 바로 R.S로 접속한다. 여기서 authorization code와 Client Secret이라는 비밀 정보를 결합해서 R.S로 전송하게 된다.

 

이제 R.S는 자신이 갖고 있는 authorization code 값과 Client id, Client Secret, redirect URL값이 완전히 일치하는지 확인하고, 일치하다면 다음 단계(액세스 토큰 발급)로 넘어간다.