구글 로그인 방법론방법 1. 클라가 구글과 소통 다하고, 백은 아무것도 안함방법 2. 클라도 구글과 소통하고, 백도 함구글 로그인 구현RestTemplate vs WebClient하루 정리
구글 로그인 방법론
방법 1. 클라가 구글과 소통 다하고, 백은 아무것도 안함
- 설명
- 아래 그림과 같이 현재 백엔드 구글 로그인 구현은 구글에 뭔가 따로 요청을 하지 않아요.
- 클라가 구글에 로그인 요청해서 id토큰과 profile 정보를 받는데, 여기서 profile정보를 서버에 넘겨줘버리는거죠.
- 플로우를 다르게 나타내보자면 아래 그림과 같아요.


- 장단점
- 간단하지만, 클라와 백이 프로필을 바로 주고 받는 거다 보니 보안에 취약하지 않을까 하는 걱정이 됩니다.
- 코드로 보여드리자면 아래와 같습니다.
- 문제점
💡 프론트엔드가 굳이 서버에게 요청해서 email, username, picture 받아오는 이유 1. 신규 유저인지 기존 유저인지 확인하려면 DB 까지 갔다와야해서 2. 프론트엔드가 구글에 요청해서 email, username, picture 받아온 후 서버에게 로그인/회원가입 요청하면(나 이미 구글로그인 했어! email만 줄테니 로그인 된 것으로 처리해줘!) 서버 입장에서 진짜 구글 로그인 한 게 맞는지 믿을 수 없음 (보안 문제)
방법 2. 클라도 구글과 소통하고, 백도 함
- 설명
- 아래 그림과 같음
- 클라가 구글에 로그인 요청해서 id 토큰 받은 걸 서버에 넘겨줌
- 서버는 id토큰을 가지고 구글에 검증 요청을 해서 profile(PayLoad) 받음
- 플로우


- 장단점
- 코드 수정 필요. 대신 안전하고 더 보편적인 방법인 거 같음.
- 코드 - 구현 예시 1 → 서버가 아래 uri로 구글에 요청 보냄
- 카카오, 네이버는 이런 식으로 구현되어야 해서, 아마 코드 통일하려고 굳이 이렇게 구현하지 않았나 싶음
- 코드 - 구현 예시 2 → GoogleIdTokenVerifier 라이브러리 사용
- 보편적인 방법인지 좀 더 서칭 필요
- 기타 참고
- 나쁘지 x
- 좋은 듯!
구글 로그인 구현
- 서론
- 두 번째 방법을 사용하기로 했다.
- 첫 번째 방법에 적어둔 단점이 너무나 치명적이기 때문이다.
- restTemplate 방식을 사용했다.
- 본론 : 내 코드
- AuthController
- AuthService
- GoogleLoginHelper
- GoogleAuthDto
- AuthGoogleLoginRequest
- AuthLogionResponse
- 참고
- 이 블로그는 webclient 방식을 사용한다.
RestTemplate vs WebClient
하루 정리
TIL 작성하기
DDD 플젝
구글 로그인 구현






