Google 로그인 인증 토큰 인증

3733 단어 GoGoogletech

개요


웹 애플리케이션을 구축하려고 할 때 Google 등 외부 인증 서비스를 사용했습니다.최근에는 대부분 전단과 후단이 분리되어 있다고 생각하기 때문에React로 Google 로그인 인증의 글처럼 전단에서 먼저 인증하는 경우가 있다.
그러나 프런트엔드에서 인증하는 경우 백엔드에서 인증이 정확한지 확인해야 합니다.Microservices에서 인증 및 승인된 디자인 모델라는 글에서 쓴 SSO 패턴은 인상과 비슷하다.
따라서 프런트엔드에서 인증된 Google 로그인 토큰을 백엔드에서 확인하는 방법에 대해 설명합니다.

대응 방법


Google 문서 Authenticate with a backend server 를 보면 라이브러리 id가 사용됩니다.토큰의 검증 방법을 실었다.REST 끝 id토큰을 매개 변수로 전달하는 방법도 소개했지만 추천하지 않는 것 같아요.
문서를 찾을 수 없지만access-토큰 인증도 가능합니다.How can I verify a Google authentication API access token?의 보도에 의하면 REST의 종점은 이미 준비가 되어 있기 때문에 그곳에 요구를 할 것이다.
또한, idtoken과accesstoken의 차이에 관해서는 OAuth 2.0/OpenID Connect의 두 토큰의 용도를 참조하십시오.

Go의 설치


위에서 말한 바와 같이 문서에 소개된 프로그램 라이브러리를 사용하는 방법은 나무랄 데가 없다.그러나 문서에 Go의 실크 샘플이 없으니 여기에 소개한다.
대응하는 것은 Validating Google sign in ID token in Go의 글에서 소개한 것처럼 google-api-go-client의 프로그램 라이브러리를 사용합니다.go get google.golang.org/api/oauth2/v2 설치 후 아래 코드로 id 진행토큰을 검증할 수 있습니다.또한 시도하지 않았지만 프로그램 라이브러리에서access토큰이 쓰는 방법도 준비했으니까access.토큰의 검증도 가능하다.
func ValidateGoogleToken(idToken string) string {
	httpClient := &http.Client{}
	oauth2Service, err := oauth2.New(httpClient)
	tokenInfoCall := oauth2Service.Tokeninfo()
	tokenInfoCall.IdToken(idToken)
	tokenInfo, err := tokenInfoCall.Do()
	if err != nil {
		return ""
	}
	return tokenInfo
}

좋은 웹페이지 즐겨찾기