從 Google Identity Toolkit 遷移至 Google Cloud's Identity Platform

最新版 Google Identity Toolkit Identity PlatformFirebase 驗證: 日後 Identity Toolkit 的功能將遭到凍結。所有新功能 我們會透過 Identity Platform 和 Firebase 開發功能 驗證我們建議 Identity Toolkit 開發人員改用 對其應用方式提出實用要求。

新功能

Identity Platform 已為 Google Identity Toolkit:

  • 新版管理控制台

    Identity Platform 提供 新版 Play 管理中心 可讓您查看、修改及刪除使用者這可以派上用場 對登入和註冊流程進行偵錯。控制台也可讓您 設定驗證方法及自訂電子郵件範本。

  • 新驗證方法

    Identity Platform 支援企業聯盟標準,例如 SAML 和 OIDC 可讓您擴充軟體式服務 (SaaS) 應用程式和服務。Identity Platform 為 GitHub、Microsoft、Yahoo 等供應商提供支援。 你可以使用匿名登入功能建立不重複的使用者 ID,但不需要 要求使用者完成任何登入或註冊流程;這能讓您 就能發出經過驗證的 API 呼叫時間 使用者決定註冊帳戶時,所有活動都會保存在 相同的使用者 ID。這很適合用於伺服器端購物等情境 購物車或其他應用程式 完成註冊流程

  • 運用服務水準協議和 Cloud 支援,安心調度資源

    Identity Platform 採用值得信賴的 Google 基礎架構, 服務水準協議 Google Cloud 提供支援服務也就是說 信任感,並仰賴 Google 提供的韌性和可用性 以及所需的擴充性

  • 可存取所有 Firebase 功能

    Firebase 行動平台可協助您快速開發高品質的應用程式 拓展使用者族群 同時賺取更多收益Firebase 是由 來搭配各種需求,搭配使用 包括下列基礎架構: 行動分析雲端通訊 即時資料庫 檔案儲存空間靜態託管 遠端設定、 行動裝置當機回報和 Android 測試

  • 更新使用者介面

    我們已根據 Google 最新的使用者體驗,徹底重新建構 UI 流程 研究。這包括密碼救援、帳戶連結、新客戶/現有帳戶 往往需要大量時間編寫程式碼, 偵錯。整合密碼專用 Smart Lock 在 Android 上,這將大幅提升登入和註冊轉換率 參與計畫的應用程式。 這個程式庫也支援簡單的主題修改程序,以符合應用程式 最大可自訂性,也就是 AndroidiOS 都已開放原始碼

  • 簡化伺服器設定程序

    我們發現很多開發人員選擇不要 導致使用者無法自行復原電子郵件 帳戶。Identity Platform 可以 傳送電子郵件驗證、密碼重設及變更密碼訊息給 也能輕鬆自訂使用者和文字 讓使用者享有低延遲和高可用性此外,您不再需要代管 用於代管重新導向和代管重新導向的使用者介面小工具 完成密碼變更作業。

  • 新 SDK

    您現在可以透過原生方式取得 Identity Toolkit 的所有伺服器 API 用戶端程式庫 (Android、iOS、網路)。開發人員將可簽署 登入 應用程式,以及註冊新舊使用者、使用使用者屬性、連結、更新與 刪除帳戶、重設密碼等等。 您也可以視需要手動建立專屬的整個登入流程, 導入這個 API

  • 行動應用程式的工作階段管理

    有了 Identity Toolkit,應用程式會根據 的初始驗證事件Identity Platform 採用 採用更新權杖的後端服務,從驗證作業中移除 事件;交換後可用於交換一小時的存取權杖,以供 Android、iOS 及 JavaScript。使用者變更密碼後,重新整理權杖將不會 即可產生新的存取權杖 系統會停用存取權,直到 使用者在裝置上重新驗證

功能差異

Identity 目前無法使用某些 Identity Toolkit 功能 平台,其他功能則經過重新設計,運作方式也有所不同。 如果這些功能很重要,建議您不要立即遷移 在多數情況下,這些功能可能不適用於您的應用程式或 可能會有簡單的備用方案,協助您繼續進行遷移。

伺服器端差異

核心身分工具包服務及其基礎 REST API 驗證邏輯和主要使用者資料庫只進行了小幅更新。 但部分功能及其整合 Identity Platform 的方式 變成您的服務了

  • 識別資訊提供者

    不支援 PayPal 和 AOL。符合以下條件的使用者 這些 IdP 的帳戶仍可透過 密碼救援流程,並為孩子的帳戶設定密碼。

  • 伺服器程式庫

    目前可使用 Admin SDK 適用於 Java、Node.js、Python、Go 和 C#

  • 帳戶管理電子郵件

    密碼重設、電子郵件驗證和電子郵件變更訊息 由 Firebase 執行,或在開發人員的 自己的郵件伺服器。目前電子郵件範本提供 使用者介面自訂元素,但您也可以使用 Admin SDK

  • 電子郵件地址變更確認

    如果使用者決定變更電子郵件地址,在 Identity Toolkit 中變更電子郵件地址 傳送電子郵件到新地址,郵件中必須含有連結才能繼續這封電子郵件 位址變更流程

    Firebase 會將撤銷電子郵件傳送至 舊電子郵件地址,並附上還原變更的連結。

  • IDP 推出作業

    Identity Toolkit 可以在登入資訊中新增識別資訊提供者 您就能反覆嘗試 支援要求。這項功能已從 Firebase 驗證中移除。

用戶端差異

在 Identity Platform 中,Google Identity Toolkit 提供的各項功能會分開計算 分為兩個部分

  • 用戶端和伺服器 SDK

    在 Identity Platform 中 REST API 已封裝到用戶端 SDK 中,可供 Android、iOS 和 JavaScript。您可以使用 SDK 登入及註冊使用者。存取權使用者 個人資訊;連結、更新及刪除帳戶;以及重設密碼 使用用戶端 SDK,而不是透過 REST 呼叫。

  • 使用者介面小工具

    提供所有 UI 流程,讓您管理登入、註冊、密碼復原與 已使用 Client SDK 重建帳戶連結,並封裝為 的登入小工具。做為開放原始碼的 SDK 形式, iOSAndroid,以及 網頁和 可讓您完全自訂流程, 身分工具包

其他差異包括:

  • 工作階段和遷移

    因為身分在 Identity Toolkit 和 Identity 中管理工作階段不同 使用者系統就會在以下時間點終止現有的工作階段: 升級 SDK,使用者必須重新登入。

事前準備

從 Identity Toolkit 遷移至 Identity Platform 之前, 必須:

  1. 開啟 Cloud 控制台,然後選取 Identity Toolkit 專案。

  2. 從 Marketplace 瀏覽至 Identity Platform 然後選取「啟用 Identity Platform」

  3. 開啟頁面。這裡顯示的服務帳戶 先前為 Identity Toolkit 設定

  4. 點選服務帳戶旁邊的 >建立金鑰。接著, 「Create private key」(建立私密金鑰) 對話方塊,將金鑰類型設為「JSON」,然後按一下 建立。包含服務帳戶憑證的 JSON 檔案如下: 。在下一個步驟中,您會需要用到這個程式碼初始化 SDK。

  5. 返回 Cloud 控制台。 在 [供應商] 區段的 [電子郵件/密碼] 中登入方式 開啟「Email Templates」頁面。接著,您可以自訂應用程式的 範本。

    在 Identity Toolkit 中,使用者重設密碼、變更電子郵件地址或 已驗證對方的電子郵件地址,你必須從 ,然後透過電子郵件將代碼傳送給使用者。 Identity Platform 會根據您設定 (不含否) 的範本傳送電子郵件 您需要採取額外的行動

  6. 選用:如需在 請安裝 Firebase SDK。

    1. 您可以使用 npm 安裝 Node.js Admin SDK:

      $ npm init
      $ npm install --save firebase-admin
      
    2. 在程式碼中,您可以透過下列方式存取 Firebase:

      var admin = require('firebase-admin');
      var app = admin.initializeApp({
        credential: admin.credential.cert('path/to/serviceAccountCredentials.json')
      });
      

接著,請完成應用程式平台的遷移步驟:AndroidiOS網站

伺服器和 JavaScript

重要異動

在 透過 Identity Platform 使用 Identity Platform

  • 網路工作階段管理

    過去,如果使用者使用 Identity Toolkit 小工具 先前在 Cookie 中 啟動工作階段。 這個 Cookie 的效期為兩週,可供使用者 帳戶管理小工具即可變更密碼和電子郵件地址。只有部分通知 網站使用這個 Cookie 驗證網站上所有其他網頁要求。 其他網站透過 Cookie 自行使用 Cookie 建立自己的 Cookie 管理架構的 Cookie 管理系統

    Identity Platform 用戶端 SDK 現已管理 ID 權杖 ,並使用 Identity Platform 的後端來維持工作階段的新鮮度。 後端會在帳戶有重大變更 (例如使用者) 變更時失效 密碼變更)。ID 權杖不會自動 設為網路用戶端的 Cookie,而且效期只有一小時。除非您 只想取得一小時的工作階段,ID 權杖並不適當 驗證所有網頁要求不過,您將 需要設定事件監聽器 在使用者登入時 取得 ID 權杖 驗證權杖,然後建立 透過您架構的 Cookie 管理系統取得 Cookie。

    您必須根據 滿足應用程式的安全防護需求

  • 網頁登入流程

    系統過去會在使用者登入時,將他們重新導向至 accountchooser.com 因此想瞭解使用者要使用的 IDIdentity Platform UI 流程現在從登入方法清單 (包括電子郵件) 開始 這個選項會前往 accountchooser.com 網頁版,並使用 開啟 hintRequest API Android。此外,使用者介面已不再需要電子郵件地址。 這樣就能更輕鬆地支援匿名使用者或自訂驗證使用者 或服務供應商的使用者,不需要提供電子郵件地址。

  • 帳戶管理小工具

    這個小工具提供使用者介面,可讓使用者變更電子郵件地址、將變更地址 或將帳戶與識別資訊提供者取消連結。目前時間: 仍在開發階段。

  • 登入按鈕/小工具

    我們不再提供登入按鈕和使用者資訊卡等小工具。他們 也能使用 Firebase Authentication API 輕鬆建構驗證應用程式。

  • 沒有 signOutUrl

    您需要呼叫 firebase.auth.signOut() 並處理回呼。

  • 沒有 oobActionUrl

    電子郵件傳送功能現在是由 Identity Platform 處理, Firebase 控制台。

  • CSS 自訂功能

    UI 小工具使用 Material Design Lite 樣式, 以動態方式新增 Material Design 動畫

步驟 1:變更伺服器程式碼

  1. 如果您的伺服器必須使用 Identity Toolkit 權杖 (效期兩週) 才能 管理網路使用者工作階段,您需要將伺服器轉換為 工作階段 Cookie

    1. 驗證 ID 權杖 並設定使用者的工作階段 Cookie用戶端應用程式會將 傳送至這個端點的 Firebase ID 權杖。
    2. 如果傳入要求內含您自己的工作階段 Cookie,您可以 視為使用者已通過驗證否則,請將要求視為 未經驗證。
    3. 如果您不希望任何使用者失去目前登入的帳戶 工作階段時,所有 Identity Toolkit 權杖都應等候兩週 失效,或為 網頁應用程式執行雙重權杖驗證 。
  2. 接著,因為 ID 權杖與 Identity Toolkit 不同 符記,就必須更新符記驗證邏輯。安裝 Admin SDK 至您的伺服器如果您使用 Admin SDK 不支援的語言 下載 JWT 權杖驗證程式庫 以便測試環境 驗證權杖

  3. 首次執行上述更新時,您的程式碼路徑可能仍會保留 都必須仰賴 Identity Toolkit 權杖如果你有 iOS 或 Android 應用程式 使用者必須升級至新版應用程式 新的程式碼路徑不強制使用者更新 應用程式,您可以新增更多伺服器驗證邏輯,以便檢查 並決定是否需要使用 Firebase SDK 使用 Identity Toolkit SDK 驗證權杖。如果只有網站 所有新的驗證要求都會轉移到 Identity Platform 之後,您只需要使用 ID 權杖 驗證方法。

請參閱 Web API 參考資料

步驟 2:更新 HTML

  1. 在應用程式中新增初始化程式碼:

    1. Cloud 控制台
    2. 透過供應商上傳 網頁中,按一下 [應用程式設定詳細資料]。這個程式碼片段 就會顯示初始化的 Identity Platform。
    3. 複製初始化程式碼片段並貼到網頁中。
  2. 新增驗證小工具

    <script src="https://www.gstatic.com/firebasejs/ui/live/0.4/firebase-ui-auth.js"></script>
    <link type="text/css" rel="stylesheet" href="https://www.gstatic.com/firebasejs/ui/live/0.4/firebase-ui-auth.css" />
    <!-- *******************************************************************************************
       * TODO(DEVELOPER): Paste the initialization snippet from:
       * Firebase Console > Overview > Add Firebase to your web app. *
       ***************************************************************************************** -->
    <script type="text/javascript">
      // FirebaseUI config.
      var uiConfig = {
        'signInSuccessUrl': '<url-to-redirect-to-on-success>',
        'signInOptions': [
          // Leave the lines as is for the providers you want to offer your users.
          firebase.auth.GoogleAuthProvider.PROVIDER_ID,
          firebase.auth.FacebookAuthProvider.PROVIDER_ID,
          firebase.auth.TwitterAuthProvider.PROVIDER_ID,
          firebase.auth.GithubAuthProvider.PROVIDER_ID,
          firebase.auth.EmailAuthProvider.PROVIDER_ID
        ],
        // Terms of service url.
        'tosUrl': '<your-tos-url>',
      };
    
      // Initialize the FirebaseUI Widget using Firebase.
      var ui = new firebaseui.auth.AuthUI(firebase.auth());
      // The start method will wait until the DOM is loaded.
      ui.start('#firebaseui-auth-container', uiConfig);
    </script>
    
  3. 將 Identity Toolkit SDK 從應用程式中移除。

  4. 如果您是透過 Identity Toolkit ID 權杖管理工作階段,則 必須在用戶端進行下列變更:

    1. 成功使用 Identity Platform 登入後,請透過以下方式取得 ID 權杖: 正在撥打 firebase.auth().currentUser.getToken()

    2. 將 ID 權杖傳送至後端伺服器、進行驗證並核發 您自己的工作階段 Cookie

      執行敏感時,請勿僅仰賴工作階段 Cookie 或傳送經過驗證的編輯要求至您的伺服器。個人中心 必須提供額外的跨網站偽造要求 (CSRF) 以及防護

      如果您的架構無法提供 CSRF 保護,其中一種方式 攻擊將取得已登入使用者的 ID 權杖 呼叫 getToken(),並為每個要求加入符記 (工作階段) Cookie)。接著 使用 Admin SDK 驗證工作階段 Cookie 您的後端架構已完成同時減少 代表 CSRF 攻擊成功,因為 ID 權杖只會使用 且絕對不會儲存在 Cookie 中

    3. 身分工具包權杖的效期為兩週。建議您 繼續核發過去兩週的憑證 根據應用程式的安全性需求決定時間長度 使用者登出時,清除工作階段 Cookie。

步驟 3:更新 IdP 重新導向網址

  1. Cloud 控制台中 開啟供應商頁面 專區。

  2. 針對您支援的每個聯合登入供應商,執行下列操作:

    1. 按一下登入提供者的名稱。
    2. 複製 OAuth 重新導向 URI。
    3. 在登入服務供應商的開發人員控制台中更新 OAuth 重新導向。 URI。

Android

步驟 1:使用 Firebase 將 Identity Platform 新增至應用程式

  1. 開啟 Cloud 控制台: 選取您的 Identity Toolkit 專案。

  2. 在「供應商」頁面按一下「應用程式設定詳細資料」,然後選取 Android「Android」分頁,然後點選「開始使用 Firebase」Android。 在「Add Firebase」對話方塊中,提供應用程式的套件名稱和簽署 憑證指紋,然後按一下 [新增應用程式]google-services.json 系統會將設定檔下載至您的電腦中。

  3. 將設定檔複製到 Android 應用程式模組根目錄。這個 設定檔包含專案和 Google OAuth 用戶端資訊。

  4. 在專案層級的 build.gradle 檔案中 (<var>your-project</var>/build.gradle),在 defaultConfig 區段:

    defaultConfig {
       …..
      applicationId "com.your-app"
    }
    
  5. 另外,在專案層級的 build.gradle 檔案中,新增要納入的依附元件 google-services 外掛程式:

    buildscript {
     dependencies {
       // Add this line
       classpath 'com.google.gms:google-services:3.0.0'
     }
    }
    
  6. 在應用程式層級的 build.gradle 檔案中 (<var>my-project</var>/<var>app-module</var>/build.gradle),請將 呼叫 Android Gradle 外掛程式後方的下列程式碼,即可啟用 google-services 外掛程式:

    apply plugin: 'com.android.application'
    // Add this line
    apply plugin: 'com.google.gms.google-services'
    

    Google 服務外掛程式會使用 google-services.json 檔案來設定 才能使用 Firebase。

  7. 此外,請在應用程式層級的 build.gradle 檔案中新增 Firebase 驗證 依附元件:

    compile 'com.google.firebase:firebase-auth:23.0.0'
    compile 'com.google.android.gms:play-services-auth:21.2.0'
    

步驟 2:移除 Identity Toolkit SDK

  1. 將 Identity Toolkit 設定從 AndroidManifest.xml 中移除 檔案。這項資訊包含在 google-service.json 檔案中 由 Google 服務外掛程式載入
  2. 將 Identity Toolkit SDK 從應用程式中移除。

步驟 3:在應用程式中新增 FirebaseUI

  1. 新增 FirebaseUI 驗證 導入您的應用程式

  2. 在您的應用程式中,將對 Identity Toolkit SDK 的呼叫取代為 FirebaseUI。

iOS

步驟 1:將 Firebase 新增至應用程式

  1. 執行下列指令,將用戶端 SDK 新增到您的應用程式:

    $ cd your-project directory
    $ pod init
    $ pod 'Firebase'
    
  2. 開啟 Cloud 控制台: 選取您的 Identity Toolkit 專案。

  3. 在「供應商」頁面上,按一下「應用程式設定詳細資料」並選取「iOS」。 分頁,然後點選「開始使用 Firebase」。在「新增 Firebase」對話方塊中 提供應用程式的套件名稱和簽署憑證指紋 按一下「新增應用程式」。接著,google-services.json 設定檔 就會下載到你的電腦上在「Add Firebase」對話方塊中,提供應用程式的 軟體包 ID 和 App Store ID,然後按一下「新增應用程式」。 接著,GoogleService-Info.plist 設定檔會下載到您的 電腦。如果專案中有多個軟體包 ID,則每個軟體包 ID 必須在 Firebase 控制台中連線 GoogleService-Info.plist 檔案。

  4. 將設定檔複製到 Xcode 專案的根目錄,然後新增至 所有指定目標。

步驟 2:移除 Identity Toolkit SDK

  1. 從應用程式的 Podfile 移除 GoogleIdentityToolkit
  2. 請執行 pod install 指令。

步驟 3:在應用程式中新增 FirebaseUI

  1. 新增 FirebaseUI 驗證 導入您的應用程式

  2. 在您的應用程式中,將對 Identity Toolkit SDK 的呼叫取代為 FirebaseUI。