klioop for iOS

OAuth 이해하기 -2 본문

web

OAuth 이해하기 -2

klioop2@gmail.com 2021. 3. 16. 14:28

지난 글에서 OAuth 가 해결하는 문제를 알아보았다.

 

이 글에서는 관련 용어를 정의해서 OAuth 를 조금 더 자세하게 설명해보고자 한다.

 

먼저 전 글에서 유저, sam 은 resource owner 라고 불린다. 전 글에서 사진 이라는 리소스를 구글 드라이브에 가지고 있다.

 

다른 서비스에 권한을 요청하는 서비스를 client 라고 부른다. 전 글에서는 구글 드라이브에 권한을 요청하는 프사기 앱이 client 이다.

resource owner 의 자원을 가지고 있는 서버를 resource 서버라고 부른다. 여기 에서는 구글 드라이브를 resource 서버라고 부른다.

 

구글 드라이브에서 프사기 앱에 권한을 부여하는 서버를 authorization 서버라고 부른다. OAuth 에서 Security 책임은 권한을 부여하는 서비스에 있다. 여기서는 구글이다. 구글은 Security 를 위해서 Authorization 만 담당하는 서버를 운영한다.

 

이제 OAuth 과정을 살펴보자.

1) resource owner 가 client 에게 resource 서버에 자신을 대신해서 자신의 특정 자원에 접근하는 요청을 보내도록 한다.

2) client 는 resource 서버의 authorization 서버에 resource owner 를 대신해서 특정 자원에 접근할 수 있는 권한을 요청한다.

3) authorization 서버는 resource owner 에게 client 가 resource owner 를 대신해서 자신의 서버에 있는 특정 자원에 접근하는 것을 허가하는지 물어본다.

4) resource owner 가 허가하면 authorization 서버는 client 에게 권한을 부여한다는 authorization 코드 또는 토큰을 발행한다.

5) client 는 이 authorization 코드를 가지고 authorization 서버에 resource 서버에 접근하게 해달라는 요청을 한번 더 보낸다.

6) authorization 서버는 authorization 코드를 확인하고 client 에게 resource 서버에 저장되어있는 특정 자원에 접근할 수 있는 access token 을 발행한다.

7) client 는 이 access 토큰을 가지고 resource 서버에 resource owner 를 대신해서 특정 자원에 접근하는 요청을 보낸다.

8) resource 서버는 access 토큰을 확인하고 대응하는 자원을 응답으로 보내준다.

 

이러한 과정의 일반적인 OAuth 프로세스를 Authorization code flow OAuth 라고 한다. 다른 과정을 가지는 OAuth 프로세스도 있지만 여기에서는 소개하지 않는다.

 

관심있는 사람들은 implicit flow, client credential flow 를 OAuth 와 함께 검색해보길 바란다.

 

'web' 카테고리의 다른 글

OAuth 이해하기 - 1  (0) 2021.03.16