플랫폼의 핵심 기능중 하나가 Open API이다. 해당 기능을 이용하려면 인증(Authetication)하고 권한 부여(Authorization)할 수 있는 약속을(프로토콜) 새롭게 만들어야 했고 그 결과물이 OAuth이다. 초기 1.0에서 보안결함을 해결한 1.0a 와 최신 2.0 버전을 가장 많이 사용을 하고 있다.
개념
예전의 OpenID방식은 인증(로그인)만을 처리하는 것이고, RESTful Open API 호출시 권한 체크를 하지 않으므로 이에 대한 권한체크도 필요하다. OAuth는 두개의 역할을 다 수행한다
- 인증 : 우리가 흔히 사용하는 Login시 ID/Password 를 통하여 인증을 받는다 - Request_Token
- 권한 : 권한이 있는 기능만을 호출할 수 있다 - Access_Token
버전
- v1.0 : 보안 결함 발견 v1.0a가 IETF 표준 프로토콜, 웹만 인증 가능
- v2.0 : v1.0의 key_signature 복잡함등의 제거, 웹뿐만 아니라 애플리케이션도 인증 가능
V1.0
- User : 특정 서비스에 사용하는 유저 예) Smart Visualization 사용자
Consumer : 특정 서비스이면서 OAuth 제공자(서비스 제공자)에게 인증과 권한을 요청 예) Smart Visualization
Service Provider : OAuth 제공자 예) 트위터
- Request Token 으로 인증을 처리하고 Access Token으로 권한
- 장점
1. 컨슈머가 아이디/패스워드를 가지지 않고 API를 사용할 수 있음
2. 필요한 API에만 제한적으로 접근할 수 있도록 권한 제어 가능
3. 사용자가 서비스 프로바이더의 관리 페이지에서 권한 취소 가능
4. 패스워드 변경 시에도 인증 토큰은 계속 유효함.
- 총정리
V2.0
- 3가지 종류 존재 : bearer token 방식 사용. 나머지 두가지는 계속 수정중
- 간단해 졌고, 더 많은 인증 방법을 제공, 대형 서비스로 확장을 지원한다
사용하기
- 다양한 언어별 라이브러리 존재
<참조>
'Protocols > OAuth' 카테고리의 다른 글
[OAuth] EveryAuth 이용해서 Twitter 인증하기 (0) | 2013.10.05 |
---|