Cloud OAuth API(cloudoauth.googleapis.com)を使用すると、認証コードまたは更新トークンを有効期間の短い Google CloudOAuth 2.0 アクセス トークンと OpenID Connect(OIDC)ID トークンに交換できます。Workforce Identity 連携の統合では、アプリケーションは組織の公開鍵を使用して返された ID トークンを検証し、アクセス トークンを使用して、連携ユーザーに代わってGoogle Cloud API を呼び出すことができます。
始める前に
- Workforce Identity プールとプロバイダを構成します。詳細については、Workforce Identity 連携を構成するをご覧ください。
- OAuth クライアントを登録し、クライアント認証情報を作成します。詳細については、OAuth アプリケーションを管理するをご覧ください。
-
Cloud OAuth API が有効になっていない場合は、有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法を確認する。
認証方法
Cloud OAuth API で OAuth クライアントを認証するには、次のいずれかの方法でクライアント ID とクライアント シークレットを渡します。
HTTP 基本認証(推奨): base64 でエンコードされたクライアント ID とクライアント シークレットを
Authorizationヘッダーで渡します。-H "Authorization: Basic $(echo -n 'CLIENT_ID:CLIENT_SECRET' | base64)"
リクエスト本文のパラメータ: リクエスト本文で
client_idパラメータとclient_secretパラメータを渡します。
認証コードをトークンと交換する
連携ユーザーがGoogle Cloudの統合認可エンドポイント(https://auth.cloud.google/authorize)で ID プロバイダ(IdP)にログインすると、認可エンドポイントは認可コードを使用してユーザーをアプリケーションのリダイレクト URI にリダイレクトします。この認証コードをアクセス トークン、更新トークン、OIDC ID トークンと交換するには、組織スコープ(シングルテナント)のエンドポイントに HTTP POST リクエストを送信します。
HTTP 基本認証(推奨):
curl -X POST https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/token \ -H "Authorization: Basic BASE64_ENCODED_CREDENTIALS" \ -H "Content-Type: application/x-www-form-urlencoded" \ --data-urlencode "grant_type=authorization_code" \ --data-urlencode "code=AUTHORIZATION_CODE" \ --data-urlencode "redirect_uri=REDIRECT_URI"
リクエスト本文のパラメータ:
curl -X POST https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/token \ -H "Content-Type: application/x-www-form-urlencoded" \ --data-urlencode "grant_type=authorization_code" \ --data-urlencode "code=AUTHORIZATION_CODE" \ --data-urlencode "redirect_uri=REDIRECT_URI" \ --data-urlencode "client_id=CLIENT_ID" \ --data-urlencode "client_secret=CLIENT_SECRET"
次のように置き換えます。
ORGANIZATION_ID: 実際の数値 Google Cloudの組織 IDBASE64_ENCODED_CREDENTIALS:CLIENT_ID:CLIENT_SECRETの base64 でエンコードされた文字列。AUTHORIZATION_CODE: Google Cloudの統合認証エンドポイント(https://auth.cloud.google/authorize)から返された認証コード。REDIRECT_URI: OAuth クライアントに構成されているリダイレクト URI。CLIENT_ID: 登録済みの OAuth クライアント ID。CLIENT_SECRET: OAuth クライアント シークレット。
アクセス トークンを更新する
アクセス トークンの有効期限が切れたら、refresh_token 権限付与タイプを使用して、組織スコープ(シングルテナント)のエンドポイントから新しい有効期間の短いアクセス トークンを取得します。
curl -X POST https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/token \ -H "Authorization: Basic BASE64_ENCODED_CREDENTIALS" \ -H "Content-Type: application/x-www-form-urlencoded" \ --data-urlencode "grant_type=refresh_token" \ --data-urlencode "refresh_token=REFRESH_TOKEN" \ --data-urlencode "redirect_uri=REDIRECT_URI"
次のように置き換えます。
ORGANIZATION_ID: 実際の数値 Google Cloudの組織 IDBASE64_ENCODED_CREDENTIALS:CLIENT_ID:CLIENT_SECRETの base64 でエンコードされた文字列。REFRESH_TOKEN: トークン エンドポイントから以前に返された更新トークン。REDIRECT_URI: OAuth クライアントに構成されているリダイレクト URI。
トークン レスポンス フィールド
トークン交換が成功すると、Cloud OAuth API は次のフィールドを含む HTTP 200 OK ステータスを返します。
| フィールド | タイプ | 説明 |
|---|---|---|
access_token |
string |
Google Cloud API を呼び出すために Cloud OAuth API によって発行された OAuth 2.0 アクセス トークン。 |
refresh_token |
string |
現在のトークンの有効期限が切れたときに新しいアクセス トークンを取得するために使用される更新トークン。 |
expires_in |
integer |
アクセス トークンの残りの有効期間(秒単位、通常は 3599)。 |
token_type |
string |
トークンタイプ(例: Bearer)。 |
scope |
string |
トークンに関連付けられているスコープのリスト。 |
id_token |
string |
認証済みの ID クレームを含む OIDC ID トークン。 |
Cloud OAuth API から返されるエラー レスポンスについては、Cloud OAuth API トークン交換エラーをご覧ください。
OIDC ID トークンを検証する
Looker OIDC 統合の場合、組織の公開 JSON Web Key(JWK)を使用して、Cloud OAuth API から返された id_token の暗号署名を検証できます。
次のいずれかの方法で、組織の公開 JWK を取得します。
- JSON Web Key Set(JWKS)エンドポイントに直接クエリを実行する: HTTP
GETリクエストをhttps://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/.well-known/jwks.jsonに送信します。 - OIDC ディスカバリ ドキュメントを使用する: HTTP
GETリクエストを OIDC ディスカバリ エンドポイント(https://auth.cloud.google/oidc/organizations/ORGANIZATION_ID/.well-known/openid-configuration)に送信して、jwks_uriフィールドから JWKS エンドポイント URL を取得します。
両方のエンドポイント URL で、ORGANIZATION_ID を数値の Google Cloud 組織 ID に置き換えます。
次のステップ
- Cloud OAuth API を使用してユーザー情報を取得する
- Cloud OAuth API を使用してエンタープライズ グループを取得する
- Cloud OAuth API の概要
- Workforce Identity 連携の OAuth アプリケーションを管理する
- Cloud OAuth REST API リファレンス