[구현] OAuth 구글 로그인 구현: client-google-server의 삼자대면

etc
3/5/2023
2023. 03. 16 업데이트 _ 로그인 구현 (파랑: 임시 토큰 발급 과정 / 초록: 진짜(?) 토큰 발급 과정)
2023. 03. 16 업데이트 _ 로그인 구현 (파랑: 임시 토큰 발급 과정 / 초록: 진짜(?) 토큰 발급 과정)
 
 
notion image
 
 

Oauth 구현 방법 1

: 클라이언트는 외부 소셜에서 받은 인증코드를 받아 서버에 넘겨주고, 백엔드에서 발행한 토큰을 활용하는 방법
notion image

Oauth 구현 방법 2 (채택)

💡
유저가 소셜 로그인 버튼을 누르면 frontend client에서 엔드포인트에 요청을 보냄
  1. 엔드포인트로 인증 요청을 받으면, Spring Sercurity의 OAuth2 클라이언트는 provider가 제공하는 AuthorizationURL(첫 로그인시 사용자 동의화면)로 redirect 한다.
  1. Oauth2에서의 콜백 결과가 에러이면 Spring Security는 OAuth2AuthenticationFailureHandler(Security Config에 정의)를 호출한다.
  1. OAuth2에서의 콜백 결과가 성공이고 사용자 인증코드(https://developers.google.com/identity/protocols/oauth2/openid-connect#scope-param에서 말하는 일회용 인증코드 code)도 포함하고 있다면 Spring Security는 access_token에 대한 authorization code를 교환하고
  1. customOAuth2UserService를 호출한다. (SecurityConfig에 정의함)
  1. customOAuth2UserService는 인증된 사용자의 세부사항을 검색한 후에 데이터베이스에 Create를 하거나 동일한 Email로 Update하는 로직을 작성
  1. 마지막으로 oAuth2AuthenticationSuccessHandler 이 불리고 그것이 JWT authentication token을 만들고 queryString에서의 redirect_uri로 간다 (client가 정의한) 이때 JWT token과 함께!
 
©JIYOUNG CHOI, All rights reserved