OAuth 2.0

 

OAuth 2.0

  • OAuth와 로그인은 반드시 분리해서 이해해야한다. 로그인이 회사원이 회사에 출입하는 것으로 비유하자면 OAuth는 방문증을 수령해서 회사에 들어가는 것을 의미한다. 따라서 ‘방문증’으로 접근할 수 있는 구역과 회사원이 접근할 수 있는 구역은 나뉘게 되는 것이다.
  • OAuth에는 Authentication뿐만 아니라 Authorization또한 포함하고 있다.
  • OpenID와 OAuth는 주요 목적이 다르다. OpenID의 경우 Authentication(인증)에 있지만 OAuth는 Authorization(허가)에 있다. OpenID는 로그인을 하는 것과 같지만 OAuth는 내가 페이스북의 담벼락에 글을 쓸 권한을 위임하느냐, 친구 목록을 가져오는 API 호출 권한을 줄거냐를 결정하는 것이다.

인증 과정

  1. User가 Server(Consumer)에 방문한다. 회원가입을 예로 들어보자. User - 회사에 일하는 사람, Conuser - 방문증으로 회사를 방문하는 사람, Service Provider - 회사의 안내데스크원
  2. Consumer는 Facebook(Service Provider)에게 request token을 발급해달라고 요청한다.
  3. Provider가 consumer에게 request token을 전달한다. 이 때, oauth_token과 oauth_token_secret을 전달한다. 이때 user는 provider가 제공할 로그인 화면을 볼 것이다. 로그인 화면은 oauth_token 안에 있는 인증 페이지로 redirect되는 것이다.
  4. 인증을 마치면(로그인 성공을 하면) consumer가 oauth_callback에 지정한 URL로 리다리엑트 시킨다.
  5. Consumer가 provider에게 Access token을 요청한다. 이 과정은 방문증을 발급하는 과정에 해당하는데 방문증을 어느 정도 수준으로 접근 가능하게 할지 정하는 역할이다.
  6. Provider는 consumer에게 access token을 준다. 방문증 발급이 완료된 상황이고 consumer는 acess token을 가지고 user의 권한으로 service provider의 기능을 사용할 수 있게 된다. 예를들어 프로필 정보를 열람한다던가 담벼락에 글을 쓴다던가 하는 것을 할 수 있게 된다.

Access Token

Refresh Token