管理 OAuth 應用程式

本指南說明如何使用Google Cloud管理 OAuth 型應用程式整合。

如要整合以 OAuth 為基礎的應用程式,大致上需要執行下列操作:

  1. 建立 OAuth 用戶端
  2. 建立 OAuth 用戶端憑證
  3. 在 OAuth 用戶端憑證中取得用戶端密鑰。如要瞭解儲存及存取用戶端密鑰的相關風險,以及有助於降低風險的策略,請參閱「OAuth 用戶端和憑證安全風險與防範措施」。

完成這些步驟後,以 OAuth 為基礎的應用程式即可存取Google Cloud 產品和資料。

事前準備

  1. 您必須 Google Cloud 設定機構。

  2. After installing the Google Cloud CLI, initialize it by running the following command:

    gcloud init

    If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  3. 您必須在要註冊 OAuth 應用程式的機構中,設定工作團隊身分集區和提供者。瞭解如何為 Microsoft Entra IDOkta其他 OIDC 和 SAML 2.0 提供者設定員工身分聯盟。

必要的角色

如要取得為機構註冊 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:您建立工作團隊身分集區和提供者的專案 ID。專案必須在建立工作團隊集區和提供者的機構中建立。
  • 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:您建立工作團隊身分集區和提供者的專案 ID。專案必須在建立工作團隊集區和提供者的機構中建立。
  • 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_mask 設為 gcloud 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 用戶端 ID,您可以說明已註冊的 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 用戶端 ID,您可以說明已註冊的 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://iam.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,您可以說明用戶端應用程式註冊程序,取得這個 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

後續步驟