OAuth는 외부 소셜 계정의 정보 공유를 통해 간편한 회원가입 및 로그인을 제공하는 개방형 표준 인증 프로토콜이다. OAuth는 사용자의 비밀번호를 제3자 애플리케이션과 공유하지 않아도 되기 때문에 보안성이 뛰어나며, API를 사용하는 애플리케이션에서 권한 부여를 통해 사용자 데이터에 접근할 수 있다.
OAuth 동작에 관여하는 참여자는 크게 세 가지로 구분한다.
Resource Server를 이용하기 위해서는 먼저 서비스를 등록해야한다. 서비스를 등록하면 일반적으로 3가지 정보를 부여받는다.
OAuth를 시도하는 사람이 실제 Resource Owner인지를 확인하기 위해, 로그인 페이지를 통해 ID와 PW 입력을 진행한다.
인증이 성공한 경우, Authorization Server는 제공된 Redirect URI로 사용자를 리다이렉션 시킨다. 이때, Redirect URI에 Authorization Code를 포함시켜 전송시킨다. 이 Authorization Code가 향후 Access Token을 획득하기 위한 임시 코드가 된다.
Client는 Access Token을 저장하고, 이후 Resource Server에서 Resource Owner의 정보에 접근하기 위해, Access Token을 사용한다.
OAuth 2.0은 2012년에 나온 두 번째 버전으로, 이전 버전인 OAuth 1.0a와 달리 간단하고 유연한 토큰 기반 인증 프로토콜이다. OAuth 2.0은 스코프라는 개념을 통해 유저 리소스에 대한 Client의 접근 범위를 제한할 수 있다. 예를 들어 서비스에서 사용자의 구글 연락처를 받아오고 싶다면, 스코프에 연락처 스코프 문자열을 포함하여 OAuth 2.0 제공자에게 전달하면 된다.