使用外部身分驗證使用者
本快速入門導覽課程說明如何使用 Identity-Aware Proxy (IAP) 和外部身分保護應用程式。結合 IAP 和 Identity Platform,您就能透過 OAuth、SAML 和 OIDC 等多種識別資訊提供者驗證使用者,不限於 Google 帳戶。
在本快速入門導覽課程中,您將使用 Facebook 驗證機制保護 App Engine 範例應用程式。
事前準備
必要的角色
如要取得完成本快速入門導覽課程所需的權限,請要求管理員在專案中授予您下列 IAM 角色:
- 專案建立者 (
roles/resourcemanager.projectCreator) - App Engine 管理員 (
roles/appengine.appAdmin) - Firebase 驗證檢視者 (
roles/firebaseauth.viewer) - IAP 政策管理員 (
roles/iap.admin) - Compute 檢視者 (
roles/compute.viewer) - Identity Platform 管理員 (
roles/identityplatform.admin)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
在 Google Cloud 控制台的專案選取器頁面中,選取或建立 Google Cloud 專案。
選取或建立專案所需的角色
- 選取專案:選取專案時,不需具備特定 IAM 角色,只要您在專案中獲派角色,即可選取該專案。
-
建立專案:如要建立專案,您必須具備專案建立者角色 (
roles/resourcemanager.projectCreator),其中包含resourcemanager.projects.create權限。瞭解如何授予角色。
安裝 Google Cloud CLI,然後使用聯合身分登入 gcloud CLI。 登入後, 執行下列指令來初始化 Google Cloud CLI:
gcloud init為專案初始化 App Engine:
gcloud app create --project=project-id
安裝最新版本的 Node.js。
-
npm install -g firebase-tools
啟用 API
首先,請啟用 Identity Platform:
前往Google Cloud 控制台的「Identity Platform Marketplace」頁面。
按一下 [Enable Identity Platform] (啟用 Identity Platform)。 Google Cloud 控制台會顯示「Identity Platform」頁面。
接著啟用 IAP:
前往 Google Cloud 控制台的「IAP」頁面。
選取您用於 Identity Platform 的專案。不支援使用不同專案。
點按「啟用 API」。
下載及部署程式碼範例
本快速入門導覽課程的程式碼包含兩個元件:用戶端應用程式和驗證器應用程式。
用戶端應用程式會受到 IAP 保護。如果用戶端收到未驗證使用者的要求,就會將要求重新導向至驗證應用程式,以便驗證使用者的身分。如果使用者成功登入,驗證器應用程式會以 JSON Web Token (JWT) 回應。為方便示範,用戶端應用程式會顯示 JWT。
首先,請下載程式碼並部署用戶端應用程式:
下載程式碼範例:
git clone https://github.com/GoogleCloudPlatform/iap-gcip-web-toolkit.git
切換至用戶端應用程式目錄:
cd iap-gcip-web-toolkit/sample/app安裝依附元件:
npm install將用戶端應用程式部署至 App Engine:
npm run deploy用戶端應用程式會在下列網址啟動:
https://[PROJECT-ID].appspot.com
接著,部署驗證器應用程式:
變更為驗證應用程式的目錄:
cd ../authui-firebaseui安裝依附元件:
npm install export NODE_OPTIONS=--openssl-legacy-provider將驗證應用程式設為使用 Firebase 託管。指定受 IAP 保護的用戶端應用程式所屬 Google Cloud 專案的 Google Cloud專案 ID:
firebase use project-id
部署應用程式:
npm run deploy驗證應用程式會在下列網址啟動:
https://[PROJECT-ID].firebaseapp.com
您已成功部署用戶端和驗證應用程式!接下來,請設定 Identity Platform 和 IAP。
設定 Identity Platform
IAP 會使用 Identity Platform 驗證外部身分。本快速入門導覽課程以 Facebook 為例,但 Identity Platform 支援多種識別資訊提供者。
建立 Facebook 應用程式
如要透過 Facebook 驗證使用者,您需要應用程式 ID 和應用程式密鑰。
登入 Meta for Developers。如果沒有 Facebook 帳戶,請先建立一個。
前往 Facebook 的「我的應用程式」頁面。
點選「建立應用程式」。
在左選單中,依序選取「設定」>「基本」。
在「Privacy Policy URL」方塊中,輸入任何有效網址。如果日後將應用程式部署至正式環境,可以更新網址,指向隱私權政策。
記下應用程式 ID 和應用程式密鑰。下一節會用到這些資訊。
將 Facebook 新增為識別資訊提供者
設定 Identity Platform,使用 Facebook 進行驗證:
前往 Google Cloud 控制台的「Identity providers」(識別資訊提供者) 頁面。
按一下「Add a provider」(新增提供者)。
從供應商清單中選取「Facebook」Facebook。
輸入在上一節取得的應用程式 ID 和應用程式密鑰。
按一下「儲存」。
設定 OAuth 重新導向 URI
Facebook 完成處理驗證器應用程式的要求後,需要重新導向至 URI。
返回 Facebook 的「我的應用程式」頁面,然後選取您的應用程式。
在左選單中,依序點選「產品」>「新增產品」。
找出「Facebook 登入」產品,然後按一下「設定」。
在左側導覽選單中,選取「Settings」(設定) (您不需要完成引導式快速入門流程)。
在「Valid OAuth Redirect URIs」方塊中,輸入重新導向 URI:
https://project-id.firebaseapp.com/__/auth/handler
您也可以在 Identity Platform 供應商設定頁面中找到這個 URI。
按一下 [儲存變更]。
Identity Platform 設定完成!現在可以設定 IAP,使用這個用戶端 ID 進行驗證。
啟用 IAP 以使用外部身分
前往 Google Cloud 控制台的「IAP」頁面。
按一下「應用程式」分頁標籤。
選取先前部署的範例 App Engine 應用程式。「Published」(已發布) 類別中的網址應類似於:
https://project-id.appspot.com
在 IAP 欄中,將切換鈕設為「開啟」。
在側邊面板中,按一下「使用外部身分進行授權」下方的「開始」。
在「Sign-in page」(登入頁面) 中,選取「I'll provide my own」(我會自行提供)。
在「Authentication URL」(驗證網址) 欄位中,輸入驗證應用程式的網址,格式大致如下:
https://project-id.firebaseapp.com/
輸入網址後, Google Cloud 控制台會自動附加您的 API 金鑰。
勾選專案名稱旁的方塊。其中應將 Facebook 列為識別資訊提供者。
按一下「儲存」。
您已完成 IAP 設定。
測試使用者驗證機制
如要測試 IAP 是否保護應用程式,並透過 Facebook 驗證使用者,請按照下列步驟操作:
在瀏覽器中前往用戶端 App Engine 應用程式:
https://project-id.appspot.com
載入畫面短暫顯示後,系統會將您重新導向至 Identity Platform 登入頁面。
按照畫面上的指示,使用 Facebook 進行驗證。
系統應會將您重新導向回用戶端應用程式,該應用程式會顯示 Identity Platform 傳回的 JWT。
如要完全登出,您必須登出建立的範例應用程式和 Facebook。您必須登出這兩個應用程式,因為 Firebase 會與 Facebook 建立一小時有效的階段。詳情請參閱「管理使用者工作階段」。
恭喜!您已成功將應用程式部署至 App Engine,並使用 IAP 和外部身分保護應用程式。
清除所用資源
為了避免系統向您的 Google Cloud 帳戶收取本頁面所用資源的費用,請按照下列步驟操作。
- 前往 Google Cloud 控制台的「Manage resources」(管理資源) 頁面。
- 在專案清單中選取要刪除的專案,然後點選「Delete」(刪除)。
- 在對話方塊中輸入專案 ID,然後按一下 [Shut down] (關閉) 以刪除專案。
此外,您可能也想刪除建立的 Facebook 應用程式。
後續步驟
進一步瞭解如何使用 Identity Platform 設定識別資訊提供者。
瞭解如何使用 Identity Platform 多用戶群架構,建立獨立的使用者與設定結構。