管理 OAuth 應用程式

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

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

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

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

事前準備

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

  2. 安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:

    gcloud init

    如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI

  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

後續步驟