🔨

OAuth2.0のGoogleログインで取得したアクセストークンを検証する

2024/03/10に公開

はじめに

OAuth 2.0のGoogleログインで取得したアクセストークンを有効なものか、バックエンドのアプリケーションなどで検証したいときの手順を書きます。

やり方

Googleトークンの情報取得APIにアクセスする

https://oauth2.googleapis.com/tokeninfo?access_token=YOUR_ACCESS_TOKENにGETでアクセスする(GETなのでブラウザーでも確認可能)

レスポンスを確認する

アクセストークンの有効期限(1時間)が切れていると次のようなエラー(400 Bad Request)がレスポンスとして返ってきます。

{
  "error_description": "Invalid Value"
}

アクセストークンが不正の場合は、次のようなエラー(400 Bad Request)がレスポンスとして返ってきます。

{
  "error": "invalid_token",
  "error_description": "Invalid Value"
}

アクセストークンが有効な場合は、次のようなレスポンスが返却されます。
※ これだけではアクセストークンを十分に検証したとは言えません。後述の検証も必ず行うようにしてください。

{
  "azp": "123456789012-foobar.apps.googleusercontent.com",
  "aud": "123456789012-foobar.apps.googleusercontent.com",
  "sub": "123456789012345678901",
  "scope": "https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile openid",
  "exp": "1710066556",
  "expires_in": "536",
  "email": "user@example.com",
  "email_verified": "true",
  "access_type": "offline"
}

azpの検証

GCPの画面を開く

  1. Google Cloud コンソールを開く。
  2. 上部メニューでプロジェクトを選択 > APIとサービス > 認証情報

クライアントIDをコピー

該当のアプリケーションのクライアントIDをコピーして取得します。
OAuth 2.0 クライアントID

azpを検証

先ほど取得したazpの文字列とクライアントIDの文字列が一致するかをバックエンド側で実施してください。

最後に

以上でトークンの検証は終わりです。
お疲れ様でした!!!

参考資料

Discussion