개발 기록

Spring Boot. GoogleIdTokenVerifier's parameters(HttpTransport, JsonFactory) : How to know that?

neunggu 2023. 8. 10. 12:34
728x90

환경. 

 java 17

 spring boot  3.1.1

 google-api-client:2.2.0

 

목표.

  1. GoogleIdTokenVerifier 생성에 필요한 파라메터를 찾는다. (HttpTransport, JsonFactory)
  2. 사람들은 이것을 어떻게 알아냈는지 알아본다.

 

문제.

https://developers.google.com/identity/gsi/web/guides/verify-google-id-token?hl=ko 

 

서버 측에서 Google ID 토큰 확인  |  Authentication  |  Google for Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English 의견 보내기 서버 측에서 Google ID 토큰 확인 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세

developers.google.com


구글 인증 문서를 보면 Google Api Client Library를 이용한 인증 방법이 나와있다.
여기서 GoogleIdTokenVerifier 객체를 사용하는데 문제는 객체 생성에 필요한 파라메터 transport, jsonFactory에 관련된 설명이 없다.

GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory)
    .setAudience(Collections.singletonList(CLIENT_ID))
    .build();

 

해결.

구글에 검색해보면 stack overflow에 답변은 있다.

(https://stackoverflow.com/questions/37172082/android-what-is-transport-and-jsonfactory-in-googleidtokenverifier-builder)

 

Android: What is transport and jsonFactory in GoogleIdTokenVerifier.Builder?

in the blow code, whats is transport and jsonFactory ? (I do not understand) https://developers.google.com/identity/sign-in/android/backend-auth#using-a-google-api-client-library import com.googl...

stackoverflow.com

NetHttpTransportGsonFactory를 사용하라는 것이다.

import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.gson.GsonFactory;

GoogleIdTokenVerifier verifier =
    new GoogleIdTokenVerifier.Builder(new NetHttpTransport(), new GsonFactory())

 

여기서 믿음이 있다면 답만 확인하고 사용한다.

하지만

이 사람들은 이걸 어떻게 알아냈을까?

이게 정답일까?

하는 생각이 들 때가 있다.

-------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------

믿음이 없으면 어떻게 해야할까??

1. 문서를 열심히 찾아본다.

 - HttpTransport

https://cloud.google.com/java/docs/reference/google-http-client/latest/com.google.api.client.http.HttpTransport

 

Class HttpTransport (1.43.2)  |  Java client library  |  Google Cloud

Send feedback Class HttpTransport (1.43.2) Stay organized with collections Save and categorize content based on your preferences. public abstract class HttpTransport Thread-safe abstract HTTP transport. Implementation is thread-safe, and sub-classes must b

cloud.google.com

문서를 보면 사용법에 대해 조금 더 자세히 나와있다.

  => 문서를 찾아보는게 중요하다.

  • 간단히 요약하면 환경에 따라 다른 것을 사용해라.
    google app engine일 경우: UrlFetchTransport를 사용해라.
  • 안드로이드나 자바의 경우: 버전이나 요구에 따라 적당한 것을 사용해라.
    (AndroidHttp, NetHttpTransport, GoogleNetHttpTransport, ApacheHttpTransport)

 - JsonFactory

https://cloud.google.com/java/docs/reference/google-http-client/latest/com.google.api.client.json.JsonFactory

 

Class JsonFactory (1.43.2)  |  Java client library  |  Google Cloud

Send feedback Class JsonFactory (1.43.2) Stay organized with collections Save and categorize content based on your preferences. public abstract class JsonFactory Abstract low-level JSON factory. Implementation is thread-safe, and sub-classes must be thread

cloud.google.com

문서를 봐도 어떤 객체를 써야하는지 잘 모르겠다.

  => stack overflow의 답변과 달린 댓글을 보고 대충 객체를 파악한 후 재검색을 반복한다.

 

2.  IDE를 이용한다. (현재 intellij 이용중)

프로그래밍에는 2가지 방법이 있는 듯하다.

    1. 직접 구현한다.

    2. 남이 구현한 걸 사용한다.

IDE는 내가 구현하는 것 뿐만 아니라 남이 구현해 놓은 것을 찾아 주는 도구이다.

생각해보면 직접 구현보다 남이 구현한 것을 더 많이 사용할 것이다.

 

직접 구현은 힘든 과정이 예상되니 당연히 2번을 먼저 해본다.

인텔리j를 사용중이라면 JsonFactory에 커서를 두고 ctrl+alt+b 를 눌러보자.

구현된 곳으로 이동(2개 이상이라면 선택이동)하는 단축키이다.(이클립스 단축키는 모르겠다.)

JsonFactory는 GsonFactory와 MockJsonFactory가 구현하고 있다고 알려준다.

GsonFactory를 사용한다.

 

HttpTransport도 똑같이 찾을수 있다.

보기에 사용할 만한게 ApacheHttpTransport와 NetHttpTransport가 있다.

문서에서 보았던 것처럼 내 환경에 맞는 것을 선택해서 사용한다.

 

결론.

IDE를 잘 활용하면 검색 시간을 줄일 수 있다. == 개발 속도가 빨라진다.

stack overflow에 달린 답변도 이런 식으로 찾아내지 않았을까? 하고 조심스럽게 추측해본다.

 

의문)  JsonFactory는 GsonFactory밖에 선택할 수 없어서 문서에 자세히 적혀있지 않았던 걸까?

728x90
반응형