このガイドでは、Workforce Identity 連携の統合で Cloud OAuth API(cloudoauth.googleapis.com)を使用して、外部認証情報、認可コード、更新トークンを Google Cloud アクセス トークンと交換する方法について説明します。
始める前に
- Workforce Identity プールとプロバイダを構成します。詳細については、Workforce Identity 連携を構成するをご覧ください。
- OAuth クライアントを登録し、クライアント認証情報を作成します。詳細については、OAuth アプリケーションを管理するをご覧ください。
-
Cloud OAuth API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法をご覧ください。
認証方法
Cloud OAuth API は、次の 2 つのクライアント認証方法をサポートしています。
HTTP Basic 認証(推奨): Base64 でエンコードされたクライアント ID とクライアント シークレットを
Authorizationヘッダーで渡します。-H "Authorization: Basic $(echo -n 'CLIENT_ID:CLIENT_SECRET' | base64)"
リクエスト本文パラメータ: リクエストの本文で
client_idパラメータとclient_secretパラメータを渡します。
認証コードをトークンと交換する
Google Cloud 認可コードをアクセス トークンと更新トークンに交換するには、HTTP POST リクエストを送信します。
組織スコープ(シングルテナント)エンドポイント
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"
次のように置き換えます。
BASE64_ENCODED_CREDENTIALS:CLIENT_ID:CLIENT_SECRETの Base64 エンコード文字列。AUTHORIZATION_CODE:Google Cloudによって発行された認証コード。REDIRECT_URI: OAuth クライアントで構成されたリダイレクト URI。ORGANIZATION_ID: 実際の数値 Google Cloudの組織 ID。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"
REFRESH_TOKEN は、トークン エンドポイントが以前に返した更新トークンに置き換えます。
トークン レスポンス フィールド
トークン交換が成功すると、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 トークン交換エラーをご覧ください。
次のステップ
- Cloud OAuth API を使用してユーザー情報を取得する
- Cloud OAuth API を使用してエンタープライズ グループを取得する
- Cloud OAuth API の概要
- Workforce Identity 連携の OAuth アプリケーションを管理する
- Cloud OAuth REST API リファレンス