使用外部身分驗證使用者

本快速入門說明如何使用 Identity-Aware Proxy (IAP) 和外部身分保護應用程式。結合 IAP 和 Identity Platform 後,您就能使用各種身分識別機制 (除了 Google 帳戶外,還包括 OAuthSAMLOIDC) 驗證使用者。

在本快速入門導覽課程中,您將使用 Facebook 驗證機制保護 App Engine 範例應用程式。

事前準備

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Make sure that billing is enabled for your Google Cloud project.

  3. 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.

  4. 為專案初始化 App Engine:

    gcloud app create --project=project-id
    
  5. 安裝 Git

  6. 安裝最新版本的 Node.js

  7. 安裝 Firebase 指令列工具

    npm install -g firebase-tools
    

啟用 API

首先,請啟用 Identity Platform:

  1. 前往Google Cloud 控制台的「Identity Platform Marketplace」頁面。

    前往 Identity Platform Marketplace 頁面

  2. 按一下 [Enable Identity Platform] (啟用 Identity Platform)。 Google Cloud 控制台會顯示「Identity Platform」頁面。

然後啟用 IAP:

  1. 前往 Google Cloud 控制台的「IAP」頁面。

    前往 IAP 頁面

  2. 選取與 Identity Platform 相同的專案。不支援使用其他專案。

  3. 按一下「啟用 API」

下載及部署範例程式碼

本快速入門導覽課程的程式碼包含兩個元件:用戶端應用程式驗證應用程式

用戶端應用程式受到 IAP 保護。如果用戶端收到未驗證使用者的要求,就會將要求重新導向至驗證應用程式,以便驗證使用者的身分。如果使用者成功登入,驗證應用程式會以 JSON Web Token (JWT) 回應。為了示範目的,用戶端應用程式會顯示 JWT。

首先,請下載程式碼並部署用戶端應用程式:

  1. 下載程式碼範例:

    git clone https://github.com/GoogleCloudPlatform/iap-gcip-web-toolkit.git
    
  2. 切換至用戶端應用程式目錄:

    cd iap-gcip-web-toolkit/sample/app
    
  3. 安裝依附元件:

    npm install
    
  4. 將用戶端應用程式部署至 App Engine:

    npm run deploy
    

    用戶端應用程式會在下列網址啟動:

    https://[PROJECT-ID].appspot.com
    

接著,部署驗證應用程式:

  1. 變更為驗證應用程式的目錄:

    cd ../authui-firebaseui
    
  2. 安裝依附元件:

    npm install
    
  3. 將驗證應用程式設為使用 Firebase 託管。指定包含 IAP 保護用戶端應用程式的 Google Cloud 專案的 Google Cloud專案 ID:

    firebase use project-id
    
  4. 部署應用程式:

    npm run deploy
    

    驗證應用程式會在下列網址啟動:

    https://[PROJECT-ID].firebaseapp.com
    

您已成功部署用戶端和驗證應用程式!接下來,請設定 Identity Platform 和 IAP。

設定 Identity Platform

IAP 會使用 Identity Platform 驗證外部身分。本快速入門課程以 Facebook 做為範例,但 Identity Platform 支援多種識別資訊提供者。

建立 Facebook 應用程式

如要透過 Facebook 驗證使用者,您需要應用程式 ID應用程式密鑰

  1. 登入 Facebook 開發人員平台。如果您還沒有 Facebook 帳戶,請先建立一個。

  2. 前往 Facebook 的「應用程式」頁面。

  3. 按一下「新增應用程式」

  4. 在左選單中依序選取「設定」>「基本」

  5. 在「隱私權政策網址」方塊中輸入任何有效的網址。如果您稍後將應用程式部署至實際環境,可以更新網址,讓其指向隱私權政策。

  6. 請記下應用程式 ID 和應用程式密鑰。您會在下一節中使用這些資訊。

將 Facebook 新增為識別資訊提供者

設定 Identity Platform 使用 Facebook 進行驗證:

  1. 前往 Google Cloud 控制台的「Identity Providers」頁面。

    前往「Identity Providers」(識別資訊提供者) 頁面

  2. 按一下「新增供應商」

  3. 從供應商清單中選取「Facebook」Facebook

  4. 輸入您在上一節中取得的應用程式 ID 和應用程式密鑰。

  5. 按一下 [儲存]

設定 OAuth 重新導向 URI

Facebook 處理完驗證應用程式的要求後,就需要重新導向的 URI。

  1. 返回 Facebook 的「應用程式」頁面,然後選取您的應用程式。

  2. 按一下左選單中的「產品」

  3. 找出「Facebook 登入」產品,然後按一下「設定」

  4. 在左側導覽選單中,選取「設定」 (您不需要完成引導式快速入門流程)。

  5. 在「有效的 OAuth 重新導向 URI」方塊中輸入重新導向 URI:

    https://project-id.firebaseapp.com/__/auth/handler
    

    您也可以在 Identity Platform 提供者設定頁面中找到這個 URI。

  6. 按一下 [儲存變更]。

您已完成 Identity Platform 設定!您現在可以設定 IAP 以用於驗證。

啟用 IAP 以使用外部身分

  1. 前往 Google Cloud 控制台的「應用程式內購」頁面。

    前往 IAP 頁面

  2. 按一下「應用程式」分頁標籤。

  3. 選取先前部署的範例 App Engine 應用程式。「Published」類別中的網址應類似於以下範例:

    https://project-id.appspot.com
    
  4. 在 IAP 資料欄中,將切換鈕切換為「On」

  5. 在側邊面板中,按一下「使用外部身分進行驗證」的「開始」

  6. 在「Sign-in page」下方,選取「I'll provide my own」

  7. 在「Authentication URL」欄位中,輸入驗證應用程式的網址,格式如下:

    https://project-id.firebaseapp.com/
    

    輸入網址後, Google Cloud 控制台會自動附加您的 API 金鑰。

  8. 勾選專案名稱旁的方塊。應將 Facebook 列為身分識別提供者。

  9. 按一下 [儲存]

您已完成 IAP 設定。

測試使用者驗證機制

如要測試 IAP 是否能保護您的應用程式,並使用 Facebook 驗證使用者,請按照下列步驟操作:

  1. 在瀏覽器中前往用戶端 App Engine 應用程式:

    https://project-id.appspot.com
    

    經過短暫的載入畫面後,系統會將您重新導向至 Identity Platform 登入頁面。

  2. 按照畫面上的提示使用 Facebook 進行驗證。

  3. 系統應會將您重新導向至用戶端應用程式,該應用程式會顯示 Identity Platform 傳回的 JWT。

如要完全登出,您必須登出所建立的範例應用程式和 Facebook。Firebase 會與 Facebook 建立有效時間為一小時的工作階段,因此您必須登出這兩個應用程式。詳情請參閱「管理使用者工作階段」。

恭喜!您已成功將應用程式部署至 App Engine,並使用 IAP 和外部身分保護應用程式。

清除所用資源

如要避免系統向您的 Google Cloud 帳戶收取您在本頁所用資源的費用,請按照下列步驟操作。

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

此外,您可能也想刪除自己建立的 Facebook 應用程式。

後續步驟