OAuth 2.0
OAuth 2.0
OAuth 2.0
- OAuth와 로그인은 반드시 분리해서 이해해야한다. 로그인이 회사원이 회사에 출입하는 것으로 비유하자면 OAuth는 방문증을 수령해서 회사에 들어가는 것을 의미한다. 따라서 ‘방문증’으로 접근할 수 있는 구역과 회사원이 접근할 수 있는 구역은 나뉘게 되는 것이다.
- OAuth에는 Authentication뿐만 아니라 Authorization또한 포함하고 있다.
- OpenID와 OAuth는 주요 목적이 다르다. OpenID의 경우 Authentication(인증)에 있지만 OAuth는 Authorization(허가)에 있다. OpenID는 로그인을 하는 것과 같지만 OAuth는 내가 페이스북의 담벼락에 글을 쓸 권한을 위임하느냐, 친구 목록을 가져오는 API 호출 권한을 줄거냐를 결정하는 것이다.
인증 과정
- User가 Server(Consumer)에 방문한다. 회원가입을 예로 들어보자. User - 회사에 일하는 사람, Conuser - 방문증으로 회사를 방문하는 사람, Service Provider - 회사의 안내데스크원
- Consumer는 Facebook(Service Provider)에게 request token을 발급해달라고 요청한다.
- Provider가 consumer에게 request token을 전달한다. 이 때, oauth_token과 oauth_token_secret을 전달한다. 이때 user는 provider가 제공할 로그인 화면을 볼 것이다. 로그인 화면은 oauth_token 안에 있는 인증 페이지로 redirect되는 것이다.
- 인증을 마치면(로그인 성공을 하면) consumer가 oauth_callback에 지정한 URL로 리다리엑트 시킨다.
- Consumer가 provider에게 Access token을 요청한다. 이 과정은 방문증을 발급하는 과정에 해당하는데 방문증을 어느 정도 수준으로 접근 가능하게 할지 정하는 역할이다.
- Provider는 consumer에게 access token을 준다. 방문증 발급이 완료된 상황이고 consumer는 acess token을 가지고 user의 권한으로 service provider의 기능을 사용할 수 있게 된다. 예를들어 프로필 정보를 열람한다던가 담벼락에 글을 쓴다던가 하는 것을 할 수 있게 된다.
Access Token
Refresh Token
This post is licensed under CC BY 4.0 by the author.