개요

OAuth2란?

  • Google, Naver, Kakao와 같이 신뢰할 수 있는 어플리케이션의 Open API와 통신하여 해당 어플리케이션이 대신 사용자의 인증을 처리하여 로그인 서비스를 이용할 수 있도록 해주는 방식이다.

사전 준비

image

  • Google의 OAuth2를 이용할 것이기 때문에 Google Cloud Platform에 API 및 서비스를 등록하여야한다.
  • 위 그림과 같이 OAuth 2.0 클라이언트 ID를 생성한다.

image

  • 위 그림과 같이 URI를 등록한다. 로컬과 EC2서버의 요청에 모두 응답할 수 있도록 여러 URI를 등록하였다.




OAuth2 로그인 동작과정

과정 그림

image

과정 설명

  1. 웹(클라이언트)에서 하이퍼 링크로 백엔드(서버)에 GET 요청을 보낸다.
  2. 백엔드에서 Google 인증 서버로 로그인 요청 로직을 보낸다.
  3. Google 인증 서버에서 로그인 페이지를 웹에 제공한다.
  4. 사용자는 로그인 페이지에서 로그인을 진행하여 Google 인증 서버에 로그인 정보를 보낸다.
  5. Google 인증 서버는 웹에게 권한을 승인했다는 임시 비밀번호 역할을 하는 Authorization Code를 발급한다.
  6. 클라이언트는 Redirect URL 경로에 Authrization Code를 담아 백엔드에 보낸다.
  7. 백엔드는 Google 인증 서버에 Access Token을 요청하기 위해서 전달받은 Redirect URL의 Authorization Code를 함께 보낸다.
  8. Google 인증 서버에서 받은 URL의 정보들과 Google 인증 서버가 가진 정보가 일치하면 Access Token을 발급하여 Http response를 통해 백엔드에 전달한다. 이때, Authorizaion code는 삭제된다.
  9. 만약, Refresh Token을 함께 전달받았다면 DB에 Refresh Token을 저장하고, 로그인 성공 로직이 수행된다.
  10. 로그인된 사용자가 가진 Access Token로 백엔드에 서비스를 요청한다.
  11. 백엔드에선 해당 Access Token으로 Google API 서버에 사용자 정보를 요청한다.
  12. Google API 서버는 Access Token을 검증하고, 검증 완료되면 서비스를 제공한다.
  13. 사용자는 서비스를 제공받는다.