本指南說明如何使用Google Cloud管理 OAuth 型應用程式整合。
如要整合以 OAuth 為基礎的應用程式,大致上需要執行下列操作:
- 建立 OAuth 用戶端。
- 建立 OAuth 用戶端憑證。
- 在 OAuth 用戶端憑證中取得用戶端密鑰。如要瞭解儲存及存取用戶端密鑰的相關風險,以及有助於降低風險的策略,請參閱「OAuth 用戶端和憑證安全風險與防範措施」。
完成這些步驟後,以 OAuth 為基礎的應用程式即可存取Google Cloud 產品和資料。
事前準備
您必須 Google Cloud 設定機構。
安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:
gcloud init
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
您必須在要註冊 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