본문 바로가기

서버운영 (TA, ADMIN)/정보보안

[정보보안] OAuth 정리

01. OAuth 정리
OAuth는 SaaS(Software as a Service) 형태입니다.


외부 서비스에서도 Facebook과 트위터의 일부 기능을 사용 가능하게. 별도의 인증 절차를 거치며 다른 서비스에서 Facebook과 트위터의 기능을 이용할 수 있게 되는 것입니다.

이 방식에서 사용하는 인증 절차가 OAuth입니다.


02. OAuth의 탄생과 사용
OAuth는 인증을 위한 Open Standard Protocol입니다.


Facebook이나 Twitter 같은 Internet Service 기능을 다른 애플리케이션(데스크톱, 웹, 모바일 등)에서도 사용 가능하게 합니다. OAuth의 탄생 이전에도 다른 애플리케이션에 사용자의 아이디와 암호가 노출되지 않도록 하면서 API 접근 위임(API Access Delegation)이 가능한 여러 인증 방법이 있습니다.

그 예로는 Google, Yahoo, AOL, Amazon에선 각각의 인증방식을 제작하여 사용하고 있습니다.


03. OAuth의 시작 (2006년 트위터 개발자 + Gnolia 개발자)
API 접근 위임에 대한 표준안을 만들고자한 것에서 시작합니다.
- OAuth 1.0 (2007)
- OAuth 1.0 revision A (2008) : 보안 문제 해결 수정버전
- OAuth 1.0 프로토콜 표준안 : RFC5849로 발표 By IETF OAuth 워킹그룹(IETF 표준 프로토콜)

OAuth2.0과 OAuth1.0은 서로 호환되지 않습니다. OAuth2.0의 경우 인증절차가 간략하다는 장점이 있습니다.


04. 인터넷 서비스 기업이 사용하는 OAuth 버전

 인터넷 서비스 기업

 OAuth 버전 

 Facebook

 2.0

 Foursquere

 2.0

 Google

 2.0

 Microsoft(Hotmail, Messenger, Xbox)

 2.0

 LinkedIn

 2.0

 NHN(오픈 API)

 2.0


05. OAuth와 로그인
회사 사원이 건물에 출입하는 것이 로그인이라면,
OAuth는 방문증을 수령한 후 회사에 출입하는 것에 비유할 수 있습니다.


방문증이란 사전에 정해진 곳만 다닐 수 있도록 하는 것이니, '방문증'을 가진 사람이 출입할 수 있는 곳과 '사원증'을 가진 사람이 출입할 수 있는 곳은 다릅니다.


즉, 직접 서비스에 로그인한 사용자와 OAuth를 이용해 권한을 인증받은 사용자가 할 수 있는 일이 다릅니다.

OAuth에서 Auth는 Authentication(인증)과 Authorization(허가) 모든 의미를 포함합니다.

OAuth 인증을 진행할때 해당 서비스 제공자는 '제3자가 어떤 정보나 서비스에 사용자 권한으로 접근하려 하는데 허용하겠느냐'라는 안내 메시지를 보여주는 것입니다.


06. OpenID와 OAuth
OpenID도 인증을 위한 표준 프로토콜이고 HTTP를 사용한다는 점에서 OAuth와 같습니다.

하지만 둘은 목적이 다릅니다.


OpenID의 주요 목적은 인증(Authentication)이지만, OAuth의 주요목적은 허가(Authorization)입니다.

OpenID는 OpenID Provider에서 사용자의 인증과정을 처리합니다. OpenID를 사용하는 여러 서비스는 OpenID Provider에게 인증을 위임하는 것입니다.


물론 OAuth에서도 인증 과정이 있습니다. 가령, Facebook의 OAuth를 이용한다면 Facebook의 사용자인지 인증하는 절차를 Facebook(Service Provider)이 처리합니다. 하지만 OAuth의 근본 목적은 해당 사용자의 담벼락에 글을 쓸 수 있는 API를 호출할 수 있는 권한이나, 친구 목록을 가져오는 API를 호출할 수 있는 권한이 있는 사용자인지 확인하는 것입니다.


OAuth를 사용자 인증을 위한 방법으로 쓸 수 있지만, OpenID와 OAuth의 근본 목적은 다릅니다.


07. OAuth Dance, OAuth 1.0 인증 과정
OAuth를 이용하여 사용자를 인증하는 과정을 OAuth Dacne라고 합니다.


두명이 춤을 추듯 정확하게 정보를 주고받는 과정을 재치있게 명명한 것인데요.


OAuth의 대표 용어는 다음과 같습니다.

 용어

 설명 

 User

 Service Provider에 계정을 가지고 있으면서, Consummer를 이용하려는 사용자

 Service Provider

 OAuth를 사용하는 Open API를 제공하는 서비스

 Consumer

 OAuth 인증을 사용해 Service Provider의 기능을 사용하려는 애플리케이션이나 웹서비스

 Request Token

 Consumer가 Service Provider에게 접근 권한을 인증받기 위해 사용하는 값. 인증이 완료된 후에는 Access Token으로 교환한다.

 Access Token

 인증 후 Consumer가 Service Provider의 자원에 접근하기 위한 키를 포함한 값


그림 <OAuth 1.0 인증과정: http://oauth.net/core/diagram.png>


위 내용은 OAuth1.0 에 대한 설명이 주를 이루었으며,

아래 주소를 참고하면 OAuth2.0 방식에 대해 자세히 확인할 수 있습니다.


http://helloworld.naver.com/helloworld/textyle/24942
https://developers.daum.net/services/apis/docs/oauth2_0/intro