(OAuth2 Login) 구글 소셜 로그인 구현 (1) - 동작원리
Spring Security + JWT를 이용한 소셜 로그인 구현
개요
OAuth2란?
- Google, Naver, Kakao와 같이 신뢰할 수 있는 어플리케이션의 Open API와 통신하여 해당 어플리케이션이 대신 사용자의 인증을 처리하여 로그인 서비스를 이용할 수 있도록 해주는 방식이다.
사전 준비
- Google의 OAuth2를 이용할 것이기 때문에 Google Cloud Platform에 API 및 서비스를 등록하여야한다.
- 위 그림과 같이 OAuth 2.0 클라이언트 ID를 생성한다.
- 위 그림과 같이 URI를 등록한다. 로컬과 EC2서버의 요청에 모두 응답할 수 있도록 여러 URI를 등록하였다.
OAuth2 로그인 동작과정
과정 그림
과정 설명
- 웹(클라이언트)에서 하이퍼 링크로 백엔드(서버)에 GET 요청을 보낸다.
- 백엔드에서 Google 인증 서버로 로그인 요청 로직을 보낸다.
- Google 인증 서버에서 로그인 페이지를 웹에 제공한다.
- 사용자는 로그인 페이지에서 로그인을 진행하여 Google 인증 서버에 로그인 정보를 보낸다.
- Google 인증 서버는 웹에게 권한을 승인했다는 임시 비밀번호 역할을 하는 Authorization Code를 발급한다.
- 클라이언트는 Redirect URL 경로에 Authrization Code를 담아 백엔드에 보낸다.
- 백엔드는 Google 인증 서버에 Access Token을 요청하기 위해서 전달받은 Redirect URL의 Authorization Code를 함께 보낸다.
- Google 인증 서버에서 받은 URL의 정보들과 Google 인증 서버가 가진 정보가 일치하면 Access Token을 발급하여 Http response를 통해 백엔드에 전달한다. 이때, Authorizaion code는 삭제된다.
- 만약, Refresh Token을 함께 전달받았다면 DB에 Refresh Token을 저장하고, 로그인 성공 로직이 수행된다.
- 로그인된 사용자가 가진 Access Token로 백엔드에 서비스를 요청한다.
- 백엔드에선 해당 Access Token으로 Google API 서버에 사용자 정보를 요청한다.
- Google API 서버는 Access Token을 검증하고, 검증 완료되면 서비스를 제공한다.
- 사용자는 서비스를 제공받는다.