가볍게 참여할 수 있는 서비스를 위해 OAuth 를 도입하였다. 대표적으로 많이 사용하는 Google, kakao 를 먼저 도입 후 필요에 따라 추가할 예정이다. OAuth 를 도입하기 위해 선택한 환경들은 다음과 같다.

OAuth2.0 의 흐름

PAYCO 에서 OAuth 의 과정을 설명한 그림중에 가장 자세하게 나와있어 가져와보았다.

Untitled

큰 흐름으로 보면 먼저 사용자가 인증 요청 을 한다. 그러면 사용자에게 OAuth 페이지가 반환되는데 사용자가 직접 이메일과 비밀번호를 입력하기 때문에 서버에서는 이를 관리할 필요가 없어진다. (이메일은 식별용으로는 필요하다) 또한 이미 회원가입 되어있는 OAuth 서비스를 이용하기 때문에 사용자는 회원가입이 아닌 로그인으로만 접근하면 되어 불필요한 과정이 하나 더 생략이 된다.

OAuth 서버에서 사용자가 입력한 이메일과 비밀번호를 보고 계정이 올바르게 입력되었으면 Authorization Code 를 발급한다. 이는 나중에 서버에서 로그인 요청을 한 사용자가 이전에 로그인 과정을 올바르게 거쳤는지 확인하는 용도이다.

서버는 Authorization Code 를 보고 OAuth 서버로 로그인이 성공적으로 되었음을 알리고, Access Token 을 받는다. 이후의 로그인이 필요한 요청에서는 이 토큰으로 대체한다.

Untitled

각 기능별로 수행하는 역할을 보면 다음과 같다. 여기서 사용자 는 실제로 서비스에 접속하려는 사용자이며, 서비스 는 내가 구현하는 서버이다. PAYCO 인증 서비스 가 OAuth 서버라고 보면 된다.