Google Oauth와 People 그리고 Identity
728x90
반응형

구글 Oauth 서비스를 사용하고 싶어서 자료를 찾아보던 와중에 큰 혼란을 겪게 되었다. 관련된 서비스가 너무 많은 것이다. 도저히 나에게 맞는 서비스를 찾는게 쉽지 않아서 정리를 한번 해보자라는 생각이 들었고 그 생각을 한지 1달도 더 지나서 이제야 정리를 해본다.

 

먼저 크게 2개의 서비스로 분리해서 설명해보자. Google IdentityGoogle People API. Google Identity는 인증과 인가, Google People API는 유저정보 취득을 목적으로 둔다. 보통은 아이덴티티쪽을 보게 될 것이다. 그러니 먼저 아이덴티티쪽을 먼저 살펴보자. 가장 먼저 눈에 띄는 것은 상단의 Overview.

 

Enable users to sign into apps and authorize apps to use Google services.
사용자가 앱에 로그인하고 앱에 Google 서비스 사용 권한을 부여하도록 돕습니다.

 

 

로그인과 관련된 전반적인 것을 다루는 서비스다. 로그인을 위해 인증해야하는 절차도 여기서 가이드를 해 준다. 이 서비스에서 가장 많이 사용하는 페이지를 몇개 소개해볼까한다.

 

 

🔑 OAuth 2.0 Scopes for Google APIs

직역하면 Google API 용 OAuth 2.0 범위다. 원하는 구글 API들을 나열해서 요청할 때 이 페이지의 URL들이 사용된다. 구글 콘솔을 통해 신청된 API 중 어떤 것을 사용할 것인가를 선택하려면 이 페이지에서 안내하는 URL이 필요하다. 신청을 통해 승인된 API인지 확인할 필요가 있기 때문이다. 물론 해당 내용에 앞서 OpenID Connect를 먼저 알아야 할 것이다. 참고로 내용을 이해하기 쉽지 않다. 여러 자료를 찾아보면서 꾸역꾸역 이해해 보길 권한다. (나 역시 아직...)

 

 

🔑 백엔드 서버로 인증

해당 내용은 상단의 "서버 측에서 Google ID 토큰 확인"과 겹치는 부분이 있다. 예를 들어 가운데 예시는 거의 비슷하다. (똑같을 수도 있다) 보다 구체적인 토큰 정보를 획득하는 내용도 있다. 해당 내용은 Google Sign-In for Websites 내부에 소속된 페이지인데 URL을 보면 이것도 결국 Google Identity 소속이다. 웹 로그인에 관련된 내용을 더 정교하게 다루고 있는 것. 그래서 "서버 측에서 Google ID 토큰 확인"보다 더 도움이 될 것으로 보인다. 비슷한 내용이 같은 카테고리 내부에 산재되어 있어서 이용자는 더 혼란스럽게 되는건 매우 아쉬운 부분이다.

 

 

🔑 서버 측에서 Google ID 토큰 확인

한국어 번역이 어색해서 영문으로 보는 것을 권장...하는데 그렇게 봐도 잘 이해를 못하는 사람도 있다. (나야 나) 간단하게 설명하면 유효한 토큰인지 확인하는 절차다. 이는 Google에서 공개키를 사용하여 서명된 토큰이 맞는지 확인하고 토큰 내 값을 통해 악성 클라이언트가 아닌지 확인한다. 또한 토큰이 만료됬는지도 알 수 있다. 

 

필자가 이 페이지를 활용하지 않은 이유는 Google API Client 라이브러리를 사용했어야 했기 때문이다. 이 방법을 사용하면 더욱 정교하게 토큰 확인 절차를 밟을 수 있지만 그럴 정도까지는 아니었기에 이 페이지는 참고만 하였다.

 

이 페이지에 아쉬운게 있다면 예시에서 idTokenString(Google ID token string)을 받는 방법이 가이드되어 있지 않다. 이 부분은 별도로 확인할 필요가 있다. 자세한 코드는 구글 Github을 참고하면 된다.

 

 

🔑 Google People API

각종 로그인 관련 정보를 Identity에서 받는다면 People API는 무엇일까? 여기는 실제 유저 정보를 확인하는 방법을 알려준다. 정보에 접근하기 위한 인증절차를 Identity에서 가이드해주고 그 이후에 실제로 원하는 정보를 획득하는건 People API를 이용하면 된다. 자바로 백엔드를 구축하는 분들은 Java Quickstart를 참고하면 된다.

 

 

개인적으로 혼선을 겪었던 부분만 조금 다루어 보았다. 혹시나 추가로 궁금한 것을 댓글로 남겨주신다면 조사해서 공유하도록 하겠다.

728x90
반응형