현재 트위터의 API v1.1 의 인증 프로토콜은 OAuth 1.0A 를 사용 중이다.
OAuth 는 2010년 IETF OAuth 워킹그룹에 의해 IETF 표준 프로토콜로 발표 되었고, 세계 많은 인터넷 서비스 기업들에서 표준 인증 방식으로 OAuth 를 사용하고 있다.
OAuth 인증 방식을 이용하면 이 인증을 공유하는 어플리케이션(웹, 모바일, 데스크탑)끼리는 별도의 인증이 필요 없다.
현재 OAuth2.0 버전까지 나와 있고 2.0버전은 1.0버전과 호환되지는 않지만 더 많은 장점이 있다.
OAuth 1.0A
OAuth 에 등장하는 출연진 들이다.
- service provider (서비스 제공자) : 트위터처럼 OAuth 인증 방식을 이용하여 API 등을 제공하는 웹 어플리케이션
- consumer (소비자) : 서비스 제공자의 API 를 이용할 어플리케이션
- user (사용자) : 서비스 제공자와 소비자에 계정을 가지고 있는 사용자
OAuth 의 목적은 사용자가 소비자 어플리케이션에서 서비스 제공자의 어플리케이션의 권한인 Access Token 을 획득하는 것이다.
이를 위한 전제 조건으로는
- 소비자가 서비스 제공자에 가입하여 인증에 필요한 consumer key 와 consumer secret 를 획득해야 한다.
- 사용자는 서비스 제공자에 가입이 되어 있어야 한다.
이제 위 그림을 살펴보면 다음과 같다.
- 사용자가 서비스 제공자 권한이 필요한 행위를 하려고 하면 소바자가 서비스 제공자에게 Request Token 을 요청한다.
이 Request Token 은 사용자 접근 권한을 인증 받기 위해 필요하며 뒤에 Access Token 과 교환한다. - 서비스 제공자는 consumer key 와 서명등을 확인하여 소비자에게 Request Token 을 발급한다.
- 소비자는 서비스 제공자로 사용자를 보내 로그인 및 접근 권한 요청 등을 승인하게 한다.
- 소비자가 접근 권한을 승인했으면 다시 소비자로 돌려보낸다. 만약 접근 권한을 승인하지 않았으면 다시 A 로 돌아간다.
- 소비자는 Request Token 을 포함하여 서비스 제공자에게 Access Token 을 요청한다.
- 서비스 제공자는 Access Token 을 발급한다.
- 소비자는 발급된 사용자 Access Token 으로 서비스 제공자의 API 를 이용한다.
위 단계에서 서비스 제공자는 Request Token 과 Access Token 만 발급 해준다.
소비자는 Request Token 과 Access Token 요청, 사용자 접근 권한 요청을 한다.
사용자는 서비스 제공자에 로그인 / 사용자 접근 권한 승인만 한다.
OAuth 1.0A 를 채택한 서비스들의 방식은 모두 동일하다.
트위터도 마찬가지로 Access Token 을 획득해야만 이용 가능한 API 들이 대부분이다.
또한 위에서 처럼 서비스 제공자 / 소비자 / 사용자의 조합에서 사용자는 전혀 관련없는 Applicatoin-only 인증의 경우 사용자 인증은 필요없다.
어플리케이션용 인증이 필요한 API 의 경우 기간내 호출 횟수에 제한을 두는 것이 특징이다.
OAuth1.0A Document - http://oauth.net/core/1.0a/
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.