本頁說明如何透過 Identity-Aware Proxy (IAP) 取得使用者身分。取得使用者身分後,應用程式就能驗證要求是否透過 IAP 傳送。如要妥善保護應用程式,請務必使用下列其中一種機制,取得經過 IAP 驗證的使用者身分。
使用簽署標頭取得使用者身分識別資訊
如要確保對 Compute Engine、GKE、Cloud Run、App Engine 標準環境或 App Engine 彈性環境應用程式的要求已由 IAP 授權,應用程式必須檢查 x-goog-iap-jwt-assertion HTTP 要求標頭,驗證每項要求。瞭解如何使用簽署的標頭保護應用程式。
IAP 也會透過下列 HTTP 標頭,將使用者身分傳遞至後端服務。這些標頭應包含命名空間前置字元
accounts.google.com。並且具相容性,但您不應依賴這些標頭做為安全機制。如果您使用這些標頭,必須將其與來自上方所列已驗證 JWT 標頭的身分識別資訊進行比較。
| 標頭名稱 | 說明 | 範例值 |
|---|---|---|
X-Goog-Authenticated-User-Email
|
使用者的電子郵件地址 |
accounts.google.com:example@gmail.com
|
X-Goog-Authenticated-User-Id
|
使用者的專屬永久 ID。 |
accounts.google.com:userIDvalue
|
透過 App Engine 標準環境 Users API 取得使用者身分識別資訊
或者,如果您有 App Engine 標準環境應用程式,可以使用 Users API 在應用程式程式碼中取得使用者身分。
如果應用程式已使用這項 API,則無須進行任何變更。 IAP 會提供使用者身分,但開啟 IAP 後,每個使用者的 Users API 使用者 ID 值都會變更。
如要取得要求的 IAP 驗證使用者身分,請呼叫 Users API 來傳回目前使用者。如果函式傳回使用者 (例如 Java 中的 req.getUserPrincipal() != null),表示使用者已透過 IAP 驗證。
同意畫面
啟用 IAP 後,使用者首次存取應用程式時,系統會將他們重新導向至同意畫面,確認是否要與應用程式分享身分。即使使用者在啟用 IAP 前已同意授權給應用程式,也會發生這種情況。如果停用 IAP 後再重新啟用,系統也會再次顯示同意畫面。
如果您使用 Users API,系統通常會為同一 Google Workspace 網域中的應用程式和使用者隱藏同意畫面。啟用 IAP 時,系統不會自動隱藏同意畫面。如要停用同意畫面 (已啟用應用程式內購功能),請按照下列步驟操作:
前往 Google 管理控制台。
在控制項清單中,選取 [Security] (安全性)。
如果未顯示「Security」(安全性),請從頁面底部的灰色列中選取 [More controls] (更多控制項),然後從控制項清單中選取 [Security] (安全性)。
如果看不到控制項,請確認您是以網域管理員的身分登入。
在選項清單中,依序選取「存取權與資料控管」和「API 控制項」。
在「Authentication」(驗證) 部分中,選取 [Manage API client access] (管理 API 用戶端存取權)。
在「Client Name」(用戶端名稱) 欄位中,輸入 IAP OAuth 2.0 用戶端 ID。您可以在「憑證」頁面中找到 IAP 用戶端 ID。
在「One or More API Scopes」(一或多個 API 範圍) 欄位中,輸入
email, openid。按一下 [授權]。
為簡化這個程序,您可以使用 API 呼叫,為所有應用程式使用單一 IAP OAuth 2.0 用戶端 ID。您無法使用 Google Cloud 控制台指定要搭配 IAP 使用的用戶端 ID。
後續步驟
- 進一步瞭解身分與存取權管理。