本指南說明如何使用Google Cloud管理 OAuth 型應用程式整合。
如要整合以 OAuth 為基礎的應用程式,大致上需要執行下列操作:
- 建立 OAuth 用戶端。
- 建立 OAuth 用戶端憑證。
- 在 OAuth 用戶端憑證中取得用戶端密鑰。如要瞭解儲存及存取用戶端密鑰的相關風險,以及有助於降低風險的策略,請參閱「OAuth 用戶端和憑證安全風險與防範措施」。
完成這些步驟後,以 OAuth 為基礎的應用程式即可存取Google Cloud 產品和資料。
事前準備
您必須 Google Cloud 設定機構。
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.
您必須在要註冊 OAuth 應用程式的機構中,設定工作團隊身分集區和提供者。瞭解如何為 Microsoft Entra ID、Okta 和其他 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 用戶端 IDPROJECT_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 應用程式的專案 IDAPP_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 用戶端 IDPROJECT_ID
:您註冊 OAuth 應用程式的專案 IDREDIRECT_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 應用程式的專案 IDAPP_OAUTH_CLIENT_ID
:要更新的 OAuth 用戶端 OAuth 用戶端 IDREDIRECT_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 用戶端 IDPROJECT_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 應用程式的專案 IDAPP_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
:代表這個用戶端憑證的 IDAPP_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 應用程式的專案 IDAPP_OAUTH_CLIENT_ID
:OAuth 用戶端 ID,您可以說明已註冊的 OAuth 用戶端應用程式來取得這個 IDAPP_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 用戶端 IDPROJECT_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 應用程式的專案 IDAPP_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 用戶端的重新導向 URIAPP_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 應用程式的專案 IDAPP_OAUTH_CLIENT_CREDENTIAL_ID
:OAuth 用戶端的重新導向 URIAPP_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 應用程式的專案 IDAPP_OAUTH_CLIENT_CREDENTIAL_ID
:OAuth 用戶端的重新導向 URIAPP_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 應用程式的專案 IDAPP_OAUTH_CLIENT_ID
:OAuth 用戶端 IDAPP_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 應用程式的專案 IDAPP_OAUTH_CLIENT_ID
:OAuth 用戶端 IDAPP_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 用戶端 IDPROJECT_ID
:您註冊 OAuth 應用程式的專案 IDAPP_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 應用程式的專案 IDAPP_OAUTH_CLIENT_ID
:用戶端憑證 IDAPP_OAUTH_CLIENT_CREDENTIAL_ID
:OAuth 用戶端 ID