기술면접대비

[Protocol] OAuth 2.0 - API 무작정 쓰지말고 원리를 이해하자

코드사냥꾼 2020. 2. 11. 10:47

💡 OAuth(Open Authentification)2.0

"웹, 앱 서비스에서 제한적으로 권한을 요청해 사용 할 수 있는 키를 발급해주는 것"

인터넷 사용자들이 비밀번호를 제공하지 않고, 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 개방형 표준 인증 방법으로 구글, 페이스북, 트위터 등이 사용하고 있으며, 타사 애플리케이션 및 웹사이트의 계정에 대한 정보를 공유할 수 있도록 허용해준다. 또한, 인증뿐만 아니라 사용자의 권한에 따라 접근할 수 있는 데이터가 다르도록 설정할 수 있는 **범용 프레임워크**이다.

  • **OAuth의 구성**
  1. Resource Owner(OAuth를 사용하는 사람) ⭐⭐⭐

  2. Authorization Server(OAuth 인증 서버)

  3. Resource Server(REST API Server)

  4. Client(Resource를 사용하는 직접 사용자) ⭐⭐⭐

  • OAuth의 원리

![25238637583547EC0A](C:\Users\bomi\Desktop\25238637583547EC0A.png)

원리를 쉽게 이야기를 해보기 위해서 OAuth 2.0 인증방식을 가지는 FaceBook을 기준으로 설명을 해보겠습니다.

\* 설명에 앞서 간단하게 Client는 본인, Resource Owner, Authorization Server, Resource Server는 Facebook 서버라고 생각합니다.

1) Client가 어떤 사이트를 이용해보려고 하는데 아이디를 FaceBook으로 가입할 수 있다는 버튼을 발견합니다.

2) 버튼을 누르면 Facebook을 로그인 창이 나옵니다. 로그인을 합니다. (이 부분이 (A), (B) 과정입니다.)

3) 로그인을 하고 나면 서버에서 승인을 받아서 (B)단계가 지났다고 생각하면 됩니다.

4) 그리고 로그인 후에, 해당사이트의 접근을 허용 할 것인가? 확인 창이 나타나게됩니다.

5) 허용을 하게 되면 해당 사이트에서 로그인 목적으로 사용할 수 있는 Access Token을 받게 됩니다.( (C), (D)과정입니다.)

6) 실제로 보면 facebook의 Access token은 다음과 같이 던져줍니다.

{

"facebook":

{

"access_token":"EAAXCfLMud8M*",

"expiration_date":"2017-01-02T07:43:09.000Z",

"id":"15037283890"

}

}

여기서 부터가 바로 발급받은 Access Token을 이용해서 서비스를 사용하는 과정( (E), (F) )입니다.

7) 이제 Access Token의 id를 가지고 access_token으로 서버의 제한된 resource(DB와 같은)을 expiration_date까지 사용할 수 있습니다.

이 과정이 끝입니다.

즉, 쉽게 이야기 하면, Facebook에게 토큰 사용요청을 해서 토큰을 받아서, 토큰을 가지고 서버에 요청하여 제한된 허용으로 사용합니다.

현재 많은 서비스들이 이 OAuth을 사용하고 있습니다. 그래서 사용자들의 편의를 돕고 있습니다.

어플리케이션에도 사용자를 쉽게 유치할 수 있습니다.

출처: https://interconnection.tistory.com/76 [라이언 서버]