최근의 인터넷 서비스는 그 자체가 SaaS(Software as a Service)의 형태이다. 필요한 기능만 서비스로 제공한다는 말이다. 예를 들어, 페이스북의 친구 목록 보기와 같은 기능을 이용하기 위해서 페이스북에 직접적으로 로그인할 필요없이 별도의 인증 절차만 거치면 타 서비스에서 페이스북 친구 목록 보기와 같은 기능을 사용할 수 있게 된다.  이때 이러한 인증 절차를 위해 사용되는게 바로 OAuth다.

 

 

 

OAuth란?


OAuth는 인증을 위한 표준 프로토콜이다. 사용자가 구글, 페이스북 같은 인터넷 서비스의 기능을 타 애플리케이션에서도 사용할 수 있게 한다. OAuth가 표준으로 채택되기 전에는 API 접근 위임에 대한 표준안이 없었는데, IETF OAuth 워킹그룹에 의해 2010년 RFC5849로 발표되면서 그해 표준이 된다.

 

OAuth 2.0은 OAuth 1.0과 호환되지 않지만, 인증 절차가 더 간략해졌다. (OAuth 2.0과 OAuth 1.0은 많이 다름)

 

OAuth에 대해 공부하기 전에 관련 용어를 먼저 익혀야 한다.

용어 설명
User Service Provider의 계정을 가지고 있으면서, Consumer를 이용하려는 사용자
Service Provider OAuth를 사용하는 Open API를 제공하는 서비스 (구글 계정으로 로그인이라면 이때, Service Provider는 구글)
Consumer OAuth 인증을 사용해 Service Provider의 기능을 사용하려는 애플리케이션이나 웹 서비스
Request Token Consumer가 Service Provider에게 접근 권한을 인증받기 위해 사용하는 값. 인증이 완료된 후에는 Access Token으로 교환한다.
Access Token 인증 후 Consumer가 Service Provider의 자원에 접근하기 위한 키를 포함한 값.

 

 

 

Google APIs에 접근하기 위한 OAuth 2.0 사용


구글 API는 인증(Authentication)과 권한(Authorization)을 위해 OAuth 2.0 프로토콜을 사용한다.

OAuth 2.0을 이용해 Google API에 접근하는 절차는 다음과 같다. 

  1. Google API Console에서 OAuth 2.0 client credential을 얻는다.
  2. Google Authorization Server로부터 access token을 얻는다.
  3. 사용자로부터 승인된 접근 스코프를 확인한다.
  4. API에 access token을 보낸다.
  5. 필요하다면 발급받은 access token을 리프레시한다.

 

 

 

OAuth로 인한 인터넷 서비스의 변화


OAuth는 요즘의 인터넷 생태계의 주요 요소로 자리 잡았다. 신생 업체들은 고유의 인증 방식을 사용하기 보다는 구글, 페이스북ID로 로그인을 통한 인증을 이용하고 있다. 이는 개발 비용과 운영 비용을 줄여준다.

 

 

 

참고자료


[1] https://d2.naver.com/helloworld/24942

[2] https://developers.google.com/identity/protocols/oauth2

 

'Web > Theory' 카테고리의 다른 글

[Web/Theory] HTTPS 프로토콜  (0) 2020.08.12
[Web/Theory] OIDC (OpenID Connect) 프로토콜  (0) 2020.08.04
[Web/Theory] URL과 URI의 차이점  (0) 2020.07.31
[Web/Theory] REST API  (0) 2020.07.30
[Web/Theory] CSRF (Cross-Site-Request-Forgery)  (0) 2020.07.20