OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 어플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다. 이 매커니즘은 여러 기업들에 의해 사용된다. 아마존, 구글, 페이스북, 마이크로소프트, 트위터 등이 있으면서 사용자들이 타사 애플리케이션이나 웹사이트의 계정에 관한 정보를 공유할 수 있게 허용한다.
출처: 위키백과 - OAuth
OAuth 1.0은 2007년에 탄생하였다.
현재 사용하는 OAuth 2.0은 1.0버전에서 인증 절차를 간략화 한 것이다.
'고 쇼핑'이라는 쇼핑 웹사이트가 있다고 생각해 보자.
그 쇼핑몰을 가입하려면 배송을 받을 주소, 전화번호, 연락받을 이메일 등등 회원가입 절차를 거쳐야 할 것이다.
그런데 이런 정보들은 모두 카카오에 입력이 이미 되어있을 것이다.
모든 사이트를 가입할때마다 이런 정보들을 입력하기 매우 번거롭고 아이디와 비밀번호를 기억하기 힘들 것이다.
우리가 입력한 정보를 카카오에서 '고 쇼핑'이란 사이트에 건내주면 처음부터 입력할 필요없이 쉽게 '고 쇼핑'에게 정보를 전달 할 수 있을 것이다.
처음으로 생각해 볼 방법은 '고 쇼핑'이란 사이트에게 내 카카오 아이디를 알려주는 것이다.
'고 쇼핑'에서 카카오의 정보를 받아올 것이다.
그런데 이와 같은 방법으로 정보를 넘겨주면 내가 믿지 못하는 처음 보는 사이트 '고 쇼핑'이 내 카카오 계정을 마음대로 이용할 수 있다.
그래서 OAuth를 사용하는 것이다.
OAuth를 이용하면 '고 쇼핑'에게 내가 카카오에서 허용한 정보만 넘겨줄 수 있다.
위의 이야기를 보면서 OAuth는 로그인을 쉽게하는 것이라고 이해하면 안된다.
OAuth와 로그인은 분리해서 이해해야 한다.
그 이유는 Naver D2 - OAuth의 사원증과 방문증의 비유를 보면 알 수 있다.
사진 출처: ResearchGate
OAuth는 위와같은 흐름을 가지고있다.
여기서 중요한 것은 Access Token이다.
Authorisation Server에서 발급한 Access Token을 이용해 허용된 사용자의 정보를 가져올 수 있는 것이다.
Resource Server는 이 토큰이 Authorisation Server에서 발급한 것이 맞는지 검증하고, 맞다면 허용된 정보만 넘겨준다.