소셜로그인 인증 방식인 OAuth 2.0 인증 방식에 대해 학습해보자!
‘내’가 ‘크롬 브라우저’로 ‘인프런’에 ‘카카오톡 로그인’으로 가입하여 이용하는 상황을 가정하겠습니다.



Definition
OAuth
OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준 이다. - 위키백과
Terminology
- Resource Owner - 나
- Consumer - 인프런
- Service Provider - 카카오톡
scope
- 성별, 연령대, 출생 연도, 생일
Client
- 인프런 회원 가입 서버
Resource Server
- 카카오톡의 성별, 연령대... 에대한 리소스 서버
Authorization Server
- 카카오톡의 인가 서버
Redirect URI
- 인가 과정을 성공적으로 수행한 경우 카카오톡의 인가 서버가 웹 브라우저를 리디렉션 시키는 인프런의 URL
Access Token
접근 토큰- 사용자 정보, 만료 시간, scope에 대한 정보 포함
- 카카오톡의 인가 서버가 생성함
- 카카오톡의 리소스 서버와 공유하는 DB에 저장하거나
- 토큰 자체에 필요한 정보를 담는 방식도 활용 (e.g. JWT)
Protocol Flow
가장 널리 사용되고 안전한 방식인 

요청 예시
Authorization code grant
방식의 flow를 살펴 보겠습니다.
(A) 인프런 회원가입 서버가 카카오톡의 인가 서버에 자신의
identifier(client_id)
, request scope
그리고 redirect URI
를 보낸다.
(B) 카카오톡 인가 서버가 내 정보를 인증하고 인프런의 권한 지급 여부를 결정한다.
(C) 인가 서버는 내 ‘크롬 브라우저’를
redirect URI
로 리디렉션 시킨다. url에 쿼리파라미터로 code
정보를 추가한다.(D) 인프런 회원가입 서버는 카카오톡 인증서버로
identifier(client_id, client_secret)
전달 받은 code
와 상호 약속된 redirect URI
정보를 보낸다(E) 카카오톡 인증 서버는
identifier
, code
와 redirect URI
정보를 확인한 이후에 Access Token
을 발급한다.이후에 인프런의 서버는
Access Token
을 활용하여 카카오톡의 리소스 서버에 ‘나’의 리소스 중 scope에 해당 되는 정보를 요청한다.