본문 바로가기

웹프로그램

OAuth 인증 개념


1. OAuth 인증이란?
OAuth 인증은 사용자가 Service Provider 비밀번호(credential)를 공유함 없이 API를 통하여 Service Provider 의 보호된 자원에 접근을
허가하는 것이다.

2. 용어정리
  - 서비스 프로바이더(Service Provider) : OAuth를 통해 접근을 허용하는 웹어플리케이션, 즉 API를 제공하는 서비스를 말함 
     예> facebook, twitter, daum, naver 등등
  - 사용자(users) : 서비스 프로바이더에 계정을 가지고 있는 개인 
  - 컨슈머(Consumer) : 사용자를 대신하여 서비스 프로바이더에 접근하기 위하여 OAuth를 사용하는 웹사이트 또는 어플리케이션 
  - 보호된 자원(Protected Resources) : 컨슈머가 인증을 통해 접근할 수 있는 서비스 프로바이더에 존재하는 사용자의 데이터
  - 컨슈머 개발자(Consumer Developer) : 컨슈머를 개발하는 개인 혹은 조직
  - 컨슈머 키(Consumer Key) : 서비스 프로바이더에게 컨슈머 자신임을 인증하기 위한 키
  - 컨슈머 시크릿(Consumer Secret) : 컨슈머의 컨슈머 키 소유권한이 있는지 인증하기 위한 키
  - 리퀘스트 토큰(Request Token) :  컨슈머가 사용자에게  접근권한을 획득하기 위해서 사용하는 값, 차후 액세스 토큰으로 교환
  - 액세스 토큰(Access Token) : 컨슈머가 사용자의 서비스 프로바이더의 비밀번호(credential)을 사용하지 않고 사용자를 대신해서
     보호된 자원(Protected Resources)에 접근하기 위해서 사용하는 값
  - 리퀘스트 토큰 시크릿(Request Token Secret) :  리퀘스트토큰이 사용자의 것임을 인증하기 위한 값
  - 액세스 토큰 시크릿(Access Token Secret) : 액세스토큰이 사용자의 것임을 인증하기 위한 값
  - OAuth 프로토콜 파라미터(OAuth Protocol Parameter) : 이름이 "oauth_"로 시작하는 파라미터

3. 요청 URL(Request URLs)
  1) OAuth는 다음 세개의 URL들을 정의한다.
  - Request Token URL : 인증되지 않은 요청 토큰(Request Token)을 얻기 위한 URL
  - User Authorization URL : 컨슈머의 접근을 허가하기 위한 사용자 인증을 얻기 위한 URL
  - Access Token URL : 사용자 인증된 요청 토큰(Request Token)을 접근 토큰(Access Token)으로 교환해 줄 것을 요청하는 URL

4. 서비스 프로바이더(Service Provider)
  1) 서비스 프로바이더는 다음과 같은 것을 공지해야 한다.
  - Oauth URL ( Request Token URL, User Authorization URL, Access Token URL), HTTP methods
  - 서비스 프로바이더가 제공하는 서명 방법(Signatuer Method)
  - 서비스 프로바이더가 토큰을 얻기 위해 필요한 추가적인 파라미터들. 이 파라미터들은 'oauth_' 로 시작해서는 안된다. 

5.  컨슈머(Consumer)
컨슈머 개발자는 컨슈머 키와 비밀번호를 서비스 프로바이더에게 제공해야 한다.

6. 파라미터
OAuth 프로토콜 파라미터 이름과 값은 대소문자를 구분한다. 모든 OAuth 프로토콜 파라미터들은 특별한 언급이 없는한 필수이며, 한 요청에 한 번 이상 있어서는 안된다.

7. 파라미터 인코딩
모든 파라미터 이름과 값들은 [RFC3986] 의 percent-encoding(%xx) 방법에 의해서 이스케이프(escaped)된다. Unreserved 문자 집합 밖의 문자 ([RFC3986]section 2.3)들은 인코딩 되어야만 한다. Unreserved 문자집합 안의 문자들은 인코딩되어서는 안된다. 16진법의 문자들은 대문자여야 한다. 텍스트(text) 이름과 값들은 percent-encoding이전에 UTF-8로 인코딩([RFC3629]) 되어야 한다.

unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"

더 자세한 내용은 http://oauth.net/core/1.0/, https://apis.daum.net/oauth/main/welcome 를 참고 하기 바란다.

크리에이티브 커먼즈 라이선스
Creative Commons License