取得使用者身分

本頁面說明如何使用 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 使用者的永久唯一識別碼。 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 時,系統不會自動略過同意畫面。如要在啟用 IAP 的情況下略過同意畫面,請按照下列步驟操作:

  1. 前往 Google 管理控制台
    前往管理控制台
  2. 在控制項清單中,選取「安全性」
    1. 如果未顯示「Security」(安全性),請從頁面底部的灰色列中選取 [More controls] (更多控制項),然後從控制項清單中選取 [Security] (安全性)
    2. 如果看不到控制項,請確認您是以網域管理員的身分登入。
  3. 在選項清單中,依次選取 [Show more] (顯示更多) 和 [Advanced settings] (進階設定)
  4. 在「Authentication」(驗證) 部分中,選取 [Manage API client access] (管理 API 用戶端存取權)
  5. 在「Client Name」欄位中,輸入 IAP OAuth 2.0 用戶端 ID。您可以在「憑證」頁面中找到 IAP 用戶端 ID。
    前往 IAP 憑證頁面
  6. 在「One or More API Scopes」(一或多個 API 範圍) 欄位中,輸入 email, openid
  7. 按一下 [授權]。

如要簡化此程序,您可以使用 API 呼叫,將單一 IAP OAuth 2.0 用戶端 ID 用於所有應用程式。您無法使用 Google Cloud 主控台指定要與 IAP 搭配使用的用戶端 ID。

後續步驟