[OAuth 2.0 마스터] 2장_OAuth 2.0 개요

시나리오

다음 시나리오로 시작하자.
사용자가 GoodApp 이라는 App 을 사용한다고 하자.
GoodApp 은 사용자의 페이스북에 등록된 친구들을 추천해줄 수 있다.

  1. 사용자가 GoodApp 에게 친구 추천을 요청
  2. GoodApp 은 먼저 자신을 인가해달라고 대답
  3. GoodApp 은 페이스북에 대한 접근 권한을 받기 위해, 사용자가 페이스북에 로그인하도록 함
  4. 페이스북은 GoodApp 이 사용자의 친구 목록에 접근하도록 허용할 것인지 질문
  5. 사용자는 네 라고 대답
  6. 페이스북은 GoodApp 에게 사용자의 친구 목록을 전달
  7. GoodApp 은 이 친구 목록을 이용해서 사용자에게 친구 추천

Client

GoodApp 에게 사용자의 친구 목록에 접근할 수 있는 권한이 부여된 이후에는, GoodApp 과 페이스분 간 정보 교환을 위한 상호 작용이 이뤄진다.
이 상호 작용은, 클라이언트 어플리케이션의 능력에 따라 달라진다.

Untrusted Client

기밀 정보를 안전한게 저장거나 전송할 수 없는 애플리케이션이다.
예를 들면, HTML/Javascript 애플리케이션으로서 정보를 안전하게 저장하는 서버가 없는 경우이다.

Trusted Client

기밀 정보를 안전한게 저장하고 전송할 수 있는 애플리케이션이다.
예를 들면, 백엔드 서버거 존재하는 클라이언트-서버-데이터베이스 구조의 애플리케이션이다.

Grant

OAuth 2.0 은 정보 교환을 위해, 클라이언트 어플리케이션에 따라 다양한 방법을 지원한다.
이것이 Grant 유형이다. 두 가지가 있다.

Implicit Grant : Client Side Workflow

GoodApp 이 웹 브라우저 상에서 동작하는 웹 애플리케이션이라고 하자.

  1. 사용자가 GoodApp 에게 친구 추천을 요청
  2. GoodApp 은 먼저 자신을 인가해달라고 대답
  3. GoodApp 은 페이스북에 대한 접근 권한을 받기 위해, 사용자가 페이스북에 로그인하도록 함
  4. 페이스북은 GoodApp 이 사용자의 친구 목록에 접근하도록 허용할 것인지 질문
  5. 사용자는 네 라고 대답
  6. 페이스북은 GoodApp 에게 사용자의 친구 목록에 접근하는 데 사용할 수 있는 키 를 전달
  7. GoodApp 은 이 키를 이용해서 페이스북에게 사용자의 친구 목록 요청
  8. 페이스북은 이 키를 확인해서 GoodApp 에게 친구 목록 전달
  9. GoodApp 은 이 친구 목록을 이용해서 사용자에게 친구 추천

위에서, 사용자의 친구 목록에 접근하는 데 사용할 수 있는 키 가 OAuth 2.0 에서는 Access Token 이라고 한다.
Access Token 은 GoodApp 에게 사용자의 친구 목록에 접근할 수 있는 권한이 부여되었다는 의미이다.

Authorization Code Grant : Service Side Workflow

GoodApp 이 백엔드 서버거 존재하는 클라이언트-서버-데이터베이스 애플리케이션이라고 하자.

  1. 사용자가 GoodApp 에게 친구 추천을 요청
  2. GoodApp 은 먼저 자신을 인가해달라고 대답
  3. GoodApp 은 페이스북에 대한 접근 권한을 받기 위해, 사용자가 페이스북에 로그인하도록 함
  4. 페이스북은 GoodApp 이 사용자의 친구 목록에 접근하도록 허용할 것인지 질문
  5. 사용자는 네 라고 대답
  6. 페이스북은 GoodApp 서버에게 사용자의 페이스북 친구 목록에 접근하는데 사용할 수 있는 키와 교환할 수 있는 Tag 를 전달
  7. GoodApp 은 이 Tag 를 이용해서 페이스북에게 사용자의 친구 목록을 전달 받는 데 사용하는 키를 요청
  8. 페이스북은 이 Tag 를 확인해서 GoodApp 에게 키를 전달
  9. GoodApp 은 이 키를 이용해서 페이스북에게 사용자의 친구 목록 요청
  10. 페이스북은 이 키를 확인해서 GoodApp 에게 친구 목록 전달
  11. GoodApp 은 이 친구 목록을 이용해서 사용자에게 친구 추천

위에서, 사용자의 페이스북 친구 목록에 접근하는데 사용할 수 있는 키와 교환할 수 있는 Tag 는 일단 한 번 사용된 이후에는 다른 키를 얻기 위해 재사용할 수 없다.
OAuth 2.0 에서는 위의 Tag 를 Authorization Code 라고 하고, 위의 Key 를 Access Token 이라고 한다.


OAuth 2.0 마스터 <찰스 비히스>

Comments