OAuth?

Open Authorization

OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다. (위키백과)

즉 서비스에 대한 회원가입없이 로그인을 제공하는 플랫폼의 아이디가 있다면

외부 서비스에서 인증이 가능하며, 그 플랫폼의 API를 이용가능하게 해주는 것이다.

기본용어

용어(2에서 변경) 설명
Service Provider
(Authorization Server) OAuth를 사용하며 Open API를 제공하는 서비스(카카오등)
Protected Resource
(Resource Server) Service Provider가 제공하는 API자원들
Consumer(Client) OAuth를 이용해 Service Provider를 사용하려는 서비스
User(Resource Owner) Service Provider에 계정이 있으며 Consumer서비스를 이용하려는 사용자
Consumer Key Consumer가 Service Provider에게 자신을 식별할때 사용하는 키
Consumer Secret Consumer Key의 소유권을 확립하기 위해 Consumer가 사용하는 Secret
Request Token Consumer가 Service Provider에게 접근 권한을 인증받기 위해 사용하는 값. 인증이 완료된 후에는 Access Token으로 교환한다.
Access Token 인증 후 Consumer가 Service Provider의 자원에 접근하기 위한 키를 포함한 값
Token Secret 주어진 토큰의 소유권을 인증하기 위해 소비자가 사용하는 Secret

OAuth 1.0a

WorkFlow

wf.png

  1. 먼저 Consumer는 Service Provider로부터 Client key와 Secret을 발급 받아야한다. 이것은 Service Provider에 API를 사용할것을 등록하는것과 동시에 Service Provider가 Consmer를 식별할 수 있게 해준다.
  2. 그림에 A 처럼 Request Token을 요청할 때 Consumer 정보, Signature 정보를 포함하여 Request token을 요청을하고 B의 흐름처럼 Request token을 발급받는다.
  3. Request Token값을 받은후 Consumer는 C처럼 User를 Service Provider에 인증 사이트로 다이렉트시키고, 유저는 그곳에서 Service Provider에 유저임을 인증하게 된다.
  4. 그러면 Consumer는 D의 정보처럼 해당 유저가 인증이되면 OAuth_token와 OAuth_verifier를 넘겨준다.