OAuth アプリケーションを管理する

このガイドでは、OAuth ベースのアプリケーションと Google Cloud の統合を管理する方法について説明します。

OAuth ベースのアプリケーションを統合する大まかな手順は次のとおりです。

  1. OAuth クライアントを作成します
  2. OAuth クライアント認証情報を作成します
  3. OAuth クライアント認証情報で、クライアント シークレットを取得します。クライアント シークレットの保存とアクセスに関連するリスクと、それらを軽減するための戦略については、OAuth クライアントと認証情報のセキュリティに関するリスクと軽減策をご覧ください。

これらの手順を完了すると、OAuth ベースのアプリケーションは Google Cloud のプロダクトとデータにアクセスできるようになります。

始める前に

  1. Google Cloud 組織を設定する必要があります。

  2. Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init

  3. OAuth アプリケーションを登録する組織で Workforce Identity プールとプロバイダを設定する必要があります。Microsoft Entra IDOktaその他の OIDC プロバイダと SAML 2.0 プロバイダの Workforce Identity 連携を設定する方法を確認してください。

必要なロール

組織に OAuth アプリケーションを登録するために必要な権限を取得するには、プロジェクトに対する IAM OAuth クライアント管理者roles/iam.oauthClientAdmin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

OAuth クライアントを管理する

このセクションでは、OAuth クライアントを管理する方法について説明します。

OAuth クライアントを作成する

OAuth クライアントを作成するには、次の操作を行います。

gcloud

gcloud iam oauth-clients create APP_OAUTH_CLIENT_ID \
    --project=PROJECT_ID \
    --location=global \
    --client-type="CONFIDENTIAL_CLIENT" \
    --display-name="My OAuth application" \
    --description="An application registration for MyApp" \
    --allowed-scopes="https://www.googleapis.com/auth/cloud-platform" \
    --allowed-redirect-uris="REDIRECT_URI" \
    --allowed-grant-types="authorization_code_grant"

次のように置き換えます。

  • APP_OAUTH_CLIENT_ID: この OAuth クライアントを表すクライアント ID。
  • PROJECT_ID: Workforce Identity プールとプロバイダを作成したプロジェクトの ID。プロジェクトは、Workforce プールとプロバイダが作成された組織で作成する必要があります。
  • REDIRECT_URI: OAuth アプリケーションのリダイレクト URI(例: https://myapp.com/signin-callback)。

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  -d "{ \
        'allowedGrantTypes': ['AUTHORIZATION_CODE_GRANT'], \
        'allowedRedirectUris': ['REDIRECT_URI'], \
        'allowedScopes': ['https://www.googleapis.com/auth/cloud-platform'], \
        'clientType': 'CONFIDENTIAL_CLIENT', \
        'description': 'My OAuth client description', \
        'disabled': false, \
        'displayName': 'My OAuth client'}" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients\?oauthClientId\=APP_OAUTH_CLIENT_ID

次のように置き換えます。

  • PROJECT_ID: Workforce Identity プールとプロバイダを作成したプロジェクトの ID。プロジェクトは、Workforce プールとプロバイダが作成された組織で作成する必要があります。
  • REDIRECT_URI: OAuth アプリケーションのリダイレクト URI(例: https://myapp.com/signin-callback)。
  • APP_OAUTH_CLIENT_ID: この OAuth クライアントを表すクライアント ID。

アプリケーションを登録したら、OAuth クライアント認証情報を作成し、OAuth アプリケーションが Google Cloud へのアクセスに使用するシークレットを取得します。

OAuth クライアントのリストを取得する

登録済みの OAuth クライアントのリストを取得するには、次のコマンドを実行します。

gcloud

gcloud iam oauth-clients list \
    --project=PROJECT_ID \
    --location=global

REST

curl \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients

PROJECT_ID は、OAuth アプリケーションが登録されているプロジェクトの ID に置き換えます。

OAuth クライアントの説明を取得する

OAuth クライアントの説明を取得するには、次のコマンドを実行します。

gcloud

gcloud iam oauth-clients describe APP_OAUTH_CLIENT_ID \
    --project PROJECT_ID \
    --location global

次のように置き換えます。

  • APP_OAUTH_CLIENT_ID: 説明を取得する OAuth クライアントの ID
  • PROJECT_ID: OAuth アプリケーションを登録したプロジェクトの ID

REST

curl \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID

次のように置き換えます。

  • PROJECT_ID: OAuth アプリケーションを登録したプロジェクトの ID
  • APP_OAUTH_CLIENT_ID: 説明を取得する OAuth クライアントの ID

OAuth クライアントを更新する

OAuth クライアントを更新するには、次のコマンドを実行します。

gcloud

gcloud iam oauth-clients update APP_OAUTH_CLIENT_ID \
    --project=PROJECT_ID \
    --location=global \
    --allowed-redirect-uris="REDIRECT_URI"

次のように置き換えます。

  • APP_OAUTH_CLIENT_ID: 更新する OAuth クライアントの OAuth クライアント ID
  • PROJECT_ID: OAuth アプリケーションを登録したプロジェクトの ID
  • REDIRECT_URI: OAuth アプリケーションのリダイレクト URI

他のフィールドを更新するには、gcloud iam oauth-clients update に記載されているフラグを使用します。

REST

curl -d'{"allowedRedirectUris":"REDIRECT_URI"}' \
  -H "Content-Type: application/json" -X PATCH \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID?update_mask=allowed_redirect_uris

次のように置き換えます。

  • PROJECT_ID: OAuth アプリケーションを登録したプロジェクトの ID
  • APP_OAUTH_CLIENT_ID: 更新する OAuth クライアントの OAuth クライアント ID
  • REDIRECT_URI: OAuth クライアントのリダイレクト URI

他のフィールドを更新するには、update_maskgcloud iam oauth-clients update に記載されているフィールド名に設定します。

OAuth クライアントを削除する

OAuth クライアントを削除するには、次のコマンドを実行します。

gcloud

gcloud iam oauth-clients delete APP_OAUTH_CLIENT_ID \
    --project PROJECT_ID \
    --location global

次のように置き換えます。

  • APP_OAUTH_CLIENT_ID: 削除する OAuth クライアント ID
  • PROJECT_ID: OAuth アプリケーションを登録したプロジェクトの ID

REST

curl -X DELETE \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID

次のように置き換えます。

  • PROJECT_ID: OAuth アプリケーションを登録したプロジェクトの ID
  • APP_OAUTH_CLIENT_ID: 削除する OAuth クライアント ID

OAuth クライアント認証情報を管理する

このセクションでは、OAuth クライアントの OAuth クライアント認証情報を管理する方法について説明します。

OAuth クライアント認証情報を作成する

OAuth クライアント認証情報を作成するには、次のコマンドを実行します。

gcloud

gcloud iam oauth-clients credentials create APP_OAUTH_CLIENT_CREDENTIAL_ID \
    --oauth-client=APP_OAUTH_CLIENT_ID \
    --display-name='My OAuth client credential' \
    --location='global'

次のように置き換えます。

  • APP_OAUTH_CLIENT_CREDENTIAL_ID: このクライアント認証情報を表す ID
  • APP_OAUTH_CLIENT_ID: 登録済みの OAuth クライアント アプリケーションの説明から取得できる OAuth クライアント ID

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  -d "{'disabled': false, 'displayName': 'My OAuth client credential'}" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials\?oauthClientCredentialId=APP_OAUTH_CLIENT_CREDENTIAL_ID

次のように置き換えます。

  • PROJECT_ID: OAuth アプリケーションを登録したプロジェクトの ID
  • APP_OAUTH_CLIENT_ID: 登録済みの OAuth クライアント アプリケーションの説明から取得できる OAuth クライアント ID
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: このクライアント認証情報を表す ID

OAuth クライアント認証情報のリストを取得する

OAuth クライアント認証情報のリストを取得するには、次のコマンドを実行します。

gcloud

gcloud iam oauth-clients credentials list \
    --oauth-client=APP_OAUTH_CLIENT_ID \
    --project=PROJECT_ID \
    --location=global

次のように置き換えます。

  • APP_OAUTH_CLIENT_ID: 認証情報のリストを取得する OAuth クライアント ID
  • PROJECT_ID: OAuth アプリケーションを登録したプロジェクトの ID

REST

curl \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/$PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials

次のように置き換えます。

  • PROJECT_ID: OAuth アプリケーションを登録したプロジェクトの ID
  • APP_OAUTH_CLIENT_ID: 認証情報のリストを取得する OAuth クライアント ID

OAuth クライアント認証情報の説明を取得する

OAuth クライアント認証情報の説明を取得するには、次のコマンドを実行します。出力を調べることで、クライアント シークレットを確認できます。

gcloud

gcloud iam oauth-clients credentials describe APP_OAUTH_CLIENT_CREDENTIAL_ID \
    --oauth-client=APP_OAUTH_CLIENT_ID \
    --location='global'

次のように置き換えます。

  • APP_OAUTH_CLIENT_CREDENTIAL_ID: OAuth クライアントのリダイレクト URI
  • APP_OAUTH_CLIENT_ID: クライアント アプリケーションの登録の説明から取得できる OAuth クライアント ID

REST

curl \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID

次のように置き換えます。

  • PROJECT_ID: OAuth アプリケーションを登録したプロジェクトの ID
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: OAuth クライアントのリダイレクト URI
  • APP_OAUTH_CLIENT_ID: クライアント アプリケーションの登録の説明から取得できる OAuth クライアント ID

出力の clientSecret はクライアント シークレットです。これは、OAuth アプリケーションが Google Cloud へのアクセスに使用するシークレットです。

OAuth クライアント認証情報を更新する

OAuth クライアント認証情報を更新するには、次のコマンドを実行します。

gcloud

gcloud iam oauth-clients credentials update APP_OAUTH_CLIENT_CREDENTIAL_ID \
    --client-id=APP_OAUTH_CLIENT_ID \
    --display-name="My new credential name" \
    --location=global

REST

curl -d'{"displayName":"My new credential name"}' -X PATCH \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://staging-iam.sandbox.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID?update_mask=display_name

次のように置き換えます。

  • PROJECT_ID: OAuth アプリケーションを登録したプロジェクトの ID
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: OAuth クライアントのリダイレクト URI
  • APP_OAUTH_CLIENT_ID: クライアント アプリケーションの登録の説明から取得できる OAuth クライアント ID

OAuth クライアント認証情報を無効にする

OAuth クライアント認証情報を削除する前に、無効にする必要があります。OAuth クライアント認証情報を無効にするには、次のコマンドを実行します。

gcloud

gcloud iam oauth-clients credentials update APP_OAUTH_CLIENT_CREDENTIAL_ID \
    --oauth-client=APP_OAUTH_CLIENT_ID \
    --disabled \
    --project=PROJECT_ID \
    --location=global

次のように置き換えます。

  • PROJECT_ID: OAuth アプリケーションを登録したプロジェクトの ID
  • APP_OAUTH_CLIENT_ID: OAuth クライアント ID
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: 無効にするクライアント認証情報 ID

REST

curl -d'{"disabled":"true"}' \
  -H "Content-Type: application/json" -X PATCH \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID?update_mask=disabled

次のように置き換えます。

  • PROJECT_ID: OAuth アプリケーションを登録したプロジェクトの ID
  • APP_OAUTH_CLIENT_ID: OAuth クライアント ID
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: 無効にするクライアント認証情報 ID

OAuth クライアント認証情報を削除する

OAuth クライアント認証情報を削除するには、次のコマンドを実行します。

gcloud

gcloud iam oauth-clients credentials delete APP_OAUTH_CLIENT_CREDENTIAL_ID \
    --project=PROJECT_ID \
    --oauth-client=APP_OAUTH_CLIENT_ID \
    --location=global

次のように置き換えます。

  • APP_OAUTH_CLIENT_CREDENTIAL_ID: OAuth クライアント ID
  • PROJECT_ID: OAuth アプリケーションを登録したプロジェクトの ID
  • APP_OAUTH_CLIENT_ID: クライアント認証情報 ID

REST

curl -X DELETE \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID

次のように置き換えます。

  • PROJECT_ID: OAuth アプリケーションを登録したプロジェクトの ID
  • APP_OAUTH_CLIENT_ID: クライアント認証情報 ID
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: OAuth クライアント ID

次のステップ