Google OpenID Connect API リファレンス

このページでは、OpenID Connect プロバイダとしての Google の実装について説明し、Google の OIDC エンドポイントの技術リファレンスを提供します。OpenID Connect(OIDC)Core 1.0 仕様では、ユーザーの認証と ID 情報の取得のためのプロトコルを定義しています。

このリファレンスは、OIDC の実装方法に関する手順を説明することを目的としていません。実装の詳細については、OpenID Connect ガイドをご覧ください。

ディスカバリ ドキュメント

ディスカバリ ドキュメントには、OpenID Connect Discovery 1.0 仕様で定義されている Google の OpenID Connect 構成に関するメタデータが含まれています。

URL: https://accounts.google.com/.well-known/openid-configuration

サポートされているリクエスト メソッド: GET

レスポンスの本文

レスポンス フィールドは、リクエスト元が https://accounts.google.com/.well-known/openid-configuration に送信した GET リクエストに対する HTTP レスポンスの本文で JSON オブジェクトとして返されます。

フィールド タイプ 説明
issuer string カード発行会社 ID。https スキームを使用する大文字と小文字が区別される URL。最新の値は https://accounts.google.com ですが、以前の実装では accounts.google.com も返されます。
authorization_endpoint string 認可エンドポイントの URL。
device_authorization_endpoint string デバイス認証エンドポイントの URL。
token_endpoint string トークン エンドポイントの URL。
userinfo_endpoint string UserInfo エンドポイントの URL。
revocation_endpoint string 取り消しエンドポイントの URL。
jwks_uri string JSON Web Key Set(JWKS)ドキュメントの URL。
response_types_supported array サポートされている response_type 値のリスト。
response_modes_supported array サポートされている response_mode 値のリスト。
authorization_response_iss_parameter_supported boolean RFC 9207 のサポートを示すブール値。
subject_types_supported array サポートされているサブジェクト識別子タイプのリスト。
id_token_signing_alg_values_supported array ID トークンの署名に使用できるアルゴリズムのリスト。
scopes_supported array サポートされているスコープ値のリスト。
claims_supported array サポートされているクレームのリスト。
token_endpoint_auth_methods_supported array トークン エンドポイントでサポートされている認証方法のリスト。
code_challenge_methods_supported array PKCE でサポートされているコード チャレンジ メソッドのリスト。
grant_types_supported array サポートされている OAuth 2.0 権限付与タイプのリスト。

ID トークン(クレーム)

レスポンスで返される id_token 値は、署名付き JSON ウェブトークン(JWT)です。この値は、ディスカバリ ドキュメントの jwks_uri から取得したキーマテリアルを使用して検証する必要があります。次の表に、デコードされた ID トークンのペイロードの内容を示します。

申し立て タイプ 説明
iss string 必須。レスポンス発行者の発行者 ID。通常は https://accounts.google.com ですが、以前の実装では accounts.google.com も返されます。
sub string 必須。ユーザーの ID。すべての Google アカウントに固有で、決して再利用されません。1 つの Google アカウントに異なる時点で複数のメールアドレスを設定できますが、sub 値は変更されません。アプリケーション内で sub をユーザーの一意の ID キーとして使用します。最大長は 255 文字(大文字と小文字が区別される ASCII 文字)です。
azp string Google Cloud コンソールから取得した、承認済みプレゼンターのクライアント識別子。このクレームは、ID トークンをリクエストしている当事者が ID トークンのオーディエンスと同じでない場合にのみ必要になります。
aud string 必須。ID トークンの対象となるオーディエンス。これは、Google Cloud コンソールから取得したアプリケーションのクライアント ID です。
iat integer 必須。ID トークンが発行された時刻。Unix エポック時間(整数秒)で表されます。
exp integer 必須。ID トークンを受け入れてはならない有効期限。Unix エポック時間(整数秒)で表されます。
nonce string 認証リクエストでアプリが提供した nonce の値。この値を 1 回だけ提示することで、リプレイ攻撃から保護する必要があります。
auth_time integer ユーザー認証が行われた時刻。Unix エポック(1970 年 1 月 1 日 00:00:00 UTC)からの経過秒数を表す JSON 数値。認証リクエストの claims パラメータに auth_time クレームが含まれている場合に提供されます。
at_hash string アクセス トークン ハッシュ。アクセス トークンが ID トークンに関連付けられていることを検証します。サーバーフローで access_token 値を使用して ID トークンが発行された場合、このクレームは常に含まれます。
email string ユーザーのメールアドレス。リクエストに email スコープを含めた場合にのみ提供されます。このクレームの値は、このアカウントに固有のものではなく、時間の経過とともに変化する可能性があるため、この値をユーザー レコードにリンクするプライマリ ID として使用しないでください。また、email クレームのドメインを使用して Google Workspace または Cloud 組織のユーザーを識別することもできません。代わりに hd クレームを使用してください。

警告: Google アカウントには複数のメールアドレスを設定できるため、メールアドレスを ID として使用しないでください。常に sub フィールドをユーザーの識別子として使用します。
email_verified boolean ユーザーのメールアドレスが確認済みの場合は true。それ以外の場合は false です。
name string 表示可能な形式でのユーザーの氏名。リクエスト スコープに文字列 profile が含まれている場合、またはトークン更新から ID トークンが返された場合に提供されることがあります。
picture string ユーザーのプロフィール写真の URL。リクエスト スコープに文字列 profile が含まれている場合、またはトークン更新から ID トークンが返された場合に提供されることがあります。
given_name string ユーザーの名(ファースト ネーム)。name クレームが存在する場合に提供されることがあります。
family_name string ユーザーの姓。name クレームが存在する場合に提供されることがあります。
hd string ユーザーの Google Workspace または Cloud 組織に関連付けられているドメイン。ユーザーが Google Cloud 組織に属している場合にのみ提供されます。特定ドメインのメンバーのみにリソースへのアクセスを制限する場合は、このクレームを確認する必要があります。このクレームがない場合、アカウントが Google 所有ドメインに属していないことを示します。

承認エンドポイント

認可エンドポイントは、ユーザーの認証と認可コードまたはトークンの取得に使用されます。

URL: https://accounts.google.com/o/oauth2/v2/auth

サポートされているリクエスト メソッド: GETPOST

リクエスト パラメータ

パラメータ タイプ 必須 / 省略可 説明
client_id string 必須 Google Cloud コンソールから取得したクライアント ID 文字列。
nonce string 省略可 リプレイ保護を有効にするためにアプリによって生成されるランダムな値。ID トークンをリクエストする場合(response_typeid_token が含まれている場合)にのみ必須。
response_type string 必須 使用するフローを決定します。値が code の場合、認可コードフローが開始され、トークンを取得するためにトークン エンドポイントへの POST が必要になります。値が tokenid_tokentoken id_token、または id_token token の場合、暗黙的フローが開始されます。この場合、リダイレクト URI で JavaScript を使用して URI フラグメントからトークンを取得する必要があります。token を使用すると URL にアクセス トークンが公開されるため、どのような形式であっても使用することは強く推奨されません。この値は OAuth 2.1 では禁止されています。
response_mode string 省略可 認可レスポンスの配信方法を指定します。response_typecode の場合、デフォルトは query です。他のレスポンス タイプの場合、デフォルトは fragment です。サポートされる値: queryfragmentform_post
redirect_uri string 必須 レスポンスの送信先を決定します。このパラメータの値は、Google Cloud コンソールで設定した承認済みリダイレクト値のいずれかと完全に一致する必要があります(HTTP または HTTPS スキーム、大文字と小文字、末尾の「/」など)。リダイレクト URI と承認済みの JavaScript 生成元は、OAuth 2.0 URI 検証ドキュメントに記載されている検証ルールに準拠している必要があります。
scope string 必須 スペース区切りのスコープの順序なしリスト。リストには openid 値を含め、その後に profile 値、email 値、またはその両方を含める必要があります。OIDC 以外のスコープを含めることもできます。profile スコープ値が存在する場合、ID トークンにはユーザーのデフォルトの profile クレームが含まれる可能性があります(保証されるわけではありません)。email スコープ値が存在する場合、ID トークンには email クレームと email_verified クレームが含まれます。詳細については、OAuth 2.0 スコープをご覧ください。
state string 推奨 プロトコルで往復される不透明な文字列。つまり、認可コードフローでは URI パラメータとして、暗黙的フローでは URI フラグメントとして返されます。state は、リクエストとレスポンスを関連付ける場合に便利です。redirect_uri は推測される可能性があるため、state 値を使用すると、受信接続がアプリによって開始された認証リクエストの結果であるという確実性を高めることができます。これにより、クロスサイト リクエスト フォージェリなどの攻撃から保護されます。
access_type string 省略可 指定できる値は offlineonline です。ユーザーがブラウザにいないときにアクセス トークンを更新する必要がある場合は、offline を使用します。この値は、更新トークンを返すために必要です。
hd string 省略可 Google Cloud 組織が所有するアカウントのログイン プロセスを効率化します。Google Cloud 組織のドメイン(mycollege.edu など)を含めることで、アカウント選択 UI をそのドメインのアカウント向けに最適化する必要があることを示すことができます。1 つの Google Cloud 組織ドメインだけでなく、Google Cloud 組織アカウント全般を最適化するには、アスタリスク(*)の値(hd=*)を設定します。
login_hint string 省略可 アプリが認証しようとしているユーザーを把握している場合は、このパラメータを認証サーバーへのヒントとして提供できます。このヒントを渡すと、アカウント選択ツールが抑制され、ログイン フォームのメールボックスが事前入力されるか、適切なセッションが選択されます。これにより、アプリが誤ったユーザー アカウントにログインした場合に発生する問題を回避できます。値は、メールアドレスまたは sub 文字列(ユーザーの Google ID と同等)のいずれかです。
prompt string 省略可 認可サーバーがユーザーに再認証と同意を求めるかどうかを指定する文字列値のスペース区切りリスト。有効な値: none(UI なし)、consent(同意を求める)、select_account(アカウントの選択を求める)。
hl string 省略可 ログイン画面、アカウント選択画面、同意画面の表示言語を指定するために使用される BCP 47 言語タグ。ブラウザ設定と Google アカウントの設定は通常、ユーザーの言語設定をより正確に反映するため、このパラメータの使用は推奨されません。
include_granted_scopes boolean 省略可 このパラメータに値 true が指定され、認可リクエストが承認された場合、認可には、他のスコープに対してこのユーザー/アプリケーションの組み合わせに付与された以前の認可が含まれます。増分認可をご覧ください。
claims object 省略可 claims パラメータは、UserInfo レスポンスまたは ID トークンに含める 1 つ以上の省略可能なフィールドを指定するために使用されます。auth_time クレームをリクエストするには、claims={\"id_token\":{\"auth_time\":{\"essential\":true}}} を使用します。

レスポンス パラメータ

認可レスポンスは、HTTP GET リダイレクトを使用して、クライアントのリダイレクト URI(redirect_uri)に配信されます。レスポンス パラメータは、response_typeresponse_mode に応じて、クエリ文字列または URL フラグメントのリダイレクト URI に追加されます。

パラメータ 説明
iss string 発行者の識別子。RFC 9207 に基づき、このパラメータは常に返され、https://accounts.google.com に設定されます。
code string アクセス トークンと ID トークンと交換できる認証コード。
state string リクエストの state パラメータと同じ値。
id_token string ユーザーに関する ID 情報を含む JSON ウェブトークン(JWT)。
access_token string Google API に送信できるアクセス トークン。
token_type string 返されるトークンのタイプ。常に Bearer です。
expires_in integer トークンが発行された時刻を基準としたアクセス トークンの有効期間(秒単位)。
scope string code または access_token によって付与されたアクセス権のスコープ。スペース区切りの大文字と小文字が区別される文字列のリストとして表されます。
error string リクエストが失敗した場合のエラーコード。
error_description string リクエストが失敗した場合のエラーの説明。

エラー レスポンス

認可エンドポイントの場合、エラーはクライアントの redirect_uri にクエリ文字列または URL フラグメントのパラメータとして返されるか、Google がホストするエラーページとしてユーザーに表示されます。

リダイレクトされたエラー

次のエラーコードが redirect_uri に返されることがあります。

エラー 説明
access_denied ユーザーまたは認可サーバーがリクエストを拒否しました。
invalid_request リクエストに必須パラメータが含まれていない、無効なパラメータ値が含まれている、パラメータが複数回含まれている、または形式が正しくない。
unauthorized_client クライアントには、このメソッドを使用して認可コードをリクエストする権限がありません。
unsupported_response_type このメソッドを使用した認可コードの取得は、認可サーバーでサポートされていません。
invalid_scope リクエストされたスコープが無効であるか、不明であるか、形式が正しくありません。

ユーザー向けのエラー

client_id または redirect_uri が無効な場合など、Authorization Server がユーザーを安全にアプリケーションにリダイレクトできないことがあります。このような場合、エラーページがユーザーに直接表示されます。

エラー 説明
admin_policy_enforced Google Workspace 管理者のポリシーにより、リクエストされた 1 つ以上のスコープを Google アカウントで承認できません。管理者が OAuth クライアント ID に明示的にアクセス権を付与するまでアクセスを制限する方法について詳しくは、Google Workspace 管理者用ヘルプ記事をご覧ください。
disallowed_useragent 認可エンドポイントは、Google の OAuth 2.0 ポリシーで禁止されている埋め込みユーザー エージェント内に表示されます。
org_internal リクエストの OAuth クライアント識別子は、特定の Google Cloud 組織の Google アカウントへのアクセスを制限するプロジェクトの一部です。
deleted_client リクエストの作成に使用されている OAuth クライアントが削除されました。削除は、手動で行うことも、未使用のクライアントの場合は自動で行うこともできます。
invalid_grant PKCE を使用しているときに、code_challenge パラメータが無効であるか、指定されていません。アクセス トークンを更新するときや増分認証を使用するときに、トークンの有効期限が切れている、トークンが無効になっている、ユーザー アカウントが削除または無効になっている可能性があります。
redirect_uri_mismatch リクエストで渡された redirect_uri が、クライアント ID の承認済みリダイレクト URI と一致しません。Google Cloud コンソールで承認済みのリダイレクト URI を確認します。このエラーは、リクエストで非推奨の OAuth アウトオブバンド(OOB)フローが使用されている場合にも発生することがあります。
invalid_client リクエストが送信されたオリジンがこのクライアントに対して承認されていない、クライアント構成が正しくない、または OAuth クライアント シークレットが正しくありません。
origin_mismatch 承認リクエストを送信した JavaScript のスキーム、ドメイン、ポートのいずれかが、OAuth クライアント ID に登録されている承認済み JavaScript 生成元 URI と一致しません。Google Cloud コンソールで承認済みの JavaScript オリジンを確認します。
invalid_request リクエストに問題がありました。リクエストの形式が正しくない、必要なパラメータが欠落している、Google がサポートしていない認証方法を使用しているなどの原因が考えられます。

トークン エンドポイント

トークン エンドポイントは、認証コードをアクセス トークンと ID トークンに交換するために使用されます。

URL: https://oauth2.googleapis.com/token

サポートされているリクエスト メソッド: POST

リクエスト パラメータ(認証コード付与)

パラメータ タイプ 必須 / 省略可 説明
code string 必須 認可エンドポイントから受信した認可コード。
client_id string 必須 Google Cloud コンソールから取得したアプリケーションのクライアント識別子。
client_secret string 必須 Google Cloud コンソールから取得したアプリケーションのクライアント シークレット。
redirect_uri string 必須 最初のリダイレクト リクエストで使用されるリダイレクト URI。リダイレクト URI と承認済みの JavaScript 生成元は、OAuth 2.0 URI 検証ドキュメントに記載されている検証ルールに準拠している必要があります。
grant_type string 必須 値として「authorization_code」を設定してください。

リクエスト パラメータ(デバイスフロー)

パラメータ タイプ 必須 / 省略可 説明
client_id string 必須 Google Cloud コンソールから取得したアプリケーションのクライアント識別子。
client_secret string 必須 Google Cloud コンソールから取得したアプリケーションのクライアント シークレット。
device_code string 必須 デバイス認証エンドポイントから返される device_code
grant_type string 必須 値として「urn:ietf:params:oauth:grant-type:device_code」を設定してください。

リクエスト パラメータ(アクセス トークンの更新)

パラメータ タイプ 必須 / 省略可 説明
client_id string 必須 Google Cloud コンソールから取得したアプリケーションのクライアント識別子。
client_secret string 必須 Google Cloud コンソールから取得したアプリケーションのクライアント シークレット。
grant_type string 必須 OpenID Connect 更新トークン仕様で定義されているとおり、refresh_token に設定する必要があります。
refresh_token string 必須 認証コードの交換から返された更新トークン。
scope string 省略可 新しいアクセス トークンにリクエストされたスコープのスペース区切りリスト。リクエストされたスコープは、元の認可リクエストで付与されたスコープのサブセットである必要があります。

レスポンスの本文

レスポンス フィールドは、リクエスト元が https://oauth2.googleapis.com/token に送信した POST リクエストに対する HTTP レスポンスの本文で JSON オブジェクトとして返されます。

フィールド タイプ 説明
access_token string Google API に送信できるアクセス トークン。
expires_in integer トークンが発行された時刻を基準としたアクセス トークンの有効期間(秒単位)。
id_token string ユーザーに関する ID 情報を含む JSON ウェブトークン(JWT)。このトークンは、最初の認証コード交換時に返されます。また、openid スコープが付与されている場合は、更新トークン リクエスト時に返されることもあります。
scope string access_token によって付与されたアクセス権のスコープ。スペース区切りの大文字と小文字が区別される文字列のリストとして表されます。
token_type string 返されるトークンのタイプ。常に Bearer です。
refresh_token string (省略可)新しいアクセス トークンの取得に使用できるトークン。このフィールドは、access_type=offline がリクエストされた場合にのみ、認可コードの最初の交換で返されます。
refresh_token_expires_in integer (省略可)リフレッシュ トークンの残りの有効期間(秒単位)。この値は、ユーザーが時間ベースのアクセスを許可した場合にのみ設定されます。

エラー レスポンス

リクエストが失敗した場合、認可サーバーは次のフィールドを含む JSON オブジェクトを返します。

フィールド タイプ 説明
error string エラーコード。
error_description string リクエストが失敗した場合のエラーの説明。

次の表に、考えられるエラーコードと関連する HTTP ステータス コードを示します。

エラー HTTP ステータス コード 説明
invalid_request 400 リクエストに必須パラメータが含まれていないか、無効なパラメータ値が含まれているか、形式が正しくありません。
invalid_client 401 クライアント認証に失敗しました。たとえば、client_idclient_secret が無効であるか、クライアント タイプが正しくありません。
invalid_grant 400 指定された認証コード、更新トークン、デバイスコードが無効である、期限切れである、取り消されている、または認証リクエストで使用されたリダイレクト URI と一致しない。
unauthorized_client 400 認証済みのクライアントには、この認可付与タイプを使用する権限がありません。
unsupported_grant_type 400 認可グラントタイプが認可サーバーでサポートされていません。
invalid_scope 400 リクエストされたスコープが無効であるか、不明であるか、形式が正しくありません。
authorization_pending 428 (デバイスフロー)ユーザーがまだ認証フローを完了していない。
slow_down 429 (デバイスフロー)デバイスからポーリング リクエストが送信される頻度が高すぎます。
access_denied 403 (デバイスフロー)ユーザーがデバイスへのアクセスを拒否しました。
expired_token 400 (デバイスフロー)device_code の有効期限が切れています。
admin_policy_enforced 400 Google Workspace 管理者によって適用されたポリシーにより、ユーザーはリクエストされたスコープを承認できません。
org_internal 403 クライアント ID は、特定の Google Cloud 組織へのアクセスを制限するプロジェクトの一部です。

デバイス認証エンドポイント

デバイス認可エンドポイントは、OAuth 2.0 デバイスフローで、入力機能が制限されているデバイスのユーザーコードと確認 URL を取得するために使用されます。

URL: https://oauth2.googleapis.com/device/code

サポートされているリクエスト メソッド: POST

リクエスト パラメータ

パラメータ タイプ 必須 / 省略可 説明
client_id string 必須 Google Cloud コンソールから取得したアプリケーションのクライアント識別子。
scope string 必須 アプリケーションがユーザーの代わりにアクセスできるリソースを特定するスコープのスペース区切りのリストです。

レスポンスの本文

レスポンスは、次のフィールドを含む JSON オブジェクトです。

フィールド タイプ 説明
device_code string 認証をリクエストするアプリを実行しているデバイスを識別するために Google が一意に割り当てる値。
user_code string アプリケーションがアクセスをリクエストしているスコープを Google に識別する、大文字と小文字が区別される値。ユーザー インターフェースでは、入力機能が豊富な別のデバイスでこの値を入力するようユーザーに指示します。
verification_url string ユーザーが別のデバイスで移動して user_code を入力し、アプリへのアクセスを許可または拒否する必要がある URL。
expires_in integer device_codeuser_code の有効期間(秒数)。
interval integer デバイスがポーリング リクエストの間で待機する時間(秒単位)。

失効エンドポイント

取り消しエンドポイントを使用すると、アプリケーションでアクセス トークンまたは更新トークンを取り消すことができます。

URL: https://oauth2.googleapis.com/revoke

サポートされているリクエスト メソッド: POST

リクエスト パラメータ

パラメータ タイプ 必須 / 省略可 説明
token string 必須 取り消すアクセス トークンまたは更新トークン。

レスポンスの本文

取り消しが成功すると、レスポンスは空の HTTP 200 OK になります。取り消しに失敗すると、JSON オブジェクトでエラー レスポンスが返されます。

フィールド タイプ 説明
error string リクエストが失敗した場合のエラーコード。
error_description string リクエストが失敗した場合のエラーの説明。

次の表に、考えられるエラーコードを示します。

エラー 説明
invalid_token リクエストで指定されたトークンはすでに期限切れか、すでに失効しています。
invalid_request リクエストに必須パラメータが含まれていないか、無効なパラメータ値が含まれているか、形式が正しくありません。

UserInfo エンドポイント

UserInfo エンドポイントは、認証されたユーザーのプロフィール情報を返します。

URL: https://openidconnect.googleapis.com/v1/userinfo

サポートされているリクエスト メソッド: GETPOST

リクエスト ヘッダー

ヘッダー 説明
Authorization 必須。Bearer: access_token に設定します。

レスポンスの本文

レスポンス フィールドは、リクエスト元が https://openidconnect.googleapis.com/v1/userinfo に送信した GET リクエストまたは POST リクエストに対する HTTP レスポンスの本文にある JSON オブジェクトで返されます。

フィールド タイプ 説明
sub string 必須。ユーザーの ID。すべての Google アカウントに固有で、決して再利用されません。大文字と小文字が区別される 255 文字以内の文字列。
name string 表示可能な形式でのユーザーの氏名。
given_name string ユーザーの名(ファースト ネーム)。
family_name string ユーザーの姓。
picture string ユーザーのプロフィール写真の URL。
email string ユーザーのメール アドレスです。
email_verified boolean ユーザーのメールアドレスが確認済みかどうか。
hd string ユーザーの Google Workspace または Cloud 組織に関連付けられている所有ドメイン。

Tokeninfo エンドポイント

tokeninfo エンドポイントは、デバッグ目的で ID トークンを検証するために使用される Google 固有の実装です。

URL: https://oauth2.googleapis.com/tokeninfo

サポートされているリクエスト メソッド: GETPOST

リクエスト パラメータ

パラメータ タイプ 必須 / 省略可 説明
id_token string 必須 検証する ID トークン。

レスポンスの本文

レスポンス フィールドは、リクエスト元が https://oauth2.googleapis.com/tokeninfo に送信した GET リクエストまたは POST リクエストに対する HTTP レスポンスの本文にある JSON オブジェクトで返されます。

フィールド タイプ 説明
iss string 発行者の識別子。常に https://accounts.google.com です。
sub string ユーザーの ID。すべての Google アカウントに固有で、決して再利用されません。
aud string ID トークンの対象となるオーディエンス。これは、Google Cloud コンソールから取得したアプリケーションのクライアント ID です。
iat integer JWT が発行された時刻。UTC で測定された 1970-01-01T0:0:0Z からの秒数として表されます。
exp integer ID トークンの処理が許可されない有効期限。UTC で測定された 1970-01-01T0:0:0Z からの秒数として表されます。
email string ユーザーのメール アドレスです。
email_verified string ユーザーのメールアドレスが確認済みかどうか。値は文字列 "true" または "false" です。
access_type string 元の認可リクエストでリクエストされたアクセスタイプ。
azp string Google Cloud コンソールから取得した、承認済みプレゼンターのクライアント識別子。
scope string トークンに付与されたスコープのスペース区切りリスト。
alg string ID トークンの署名に使用されるアルゴリズム。
kid string ID トークンの署名に使用される鍵 ID。
typ string トークンのタイプ。常に JWT です。