2016年5月,我們發布了最新版本的Google Identity Toolkit作為Firebase身份驗證; 2019年4月,我們發布了Google Cloud的Identity Platform 。這些產品包括升級的客戶端SDK,開源UI庫,會話管理和用於忘記密碼流的集成電子郵件發送服務。

20206月30日,此頁面和API設置頁面上記錄的SDK將停止運行。 (Identity Platform和Firebase身份驗證使用的https://identitytoolkit.googleapis.com/...https://securetoken.googleapis.com/...端點將繼續運行。)

要從Identity Toolkit遷移現有項目,請參閱《 Identity Platform遷移指南》或《 Firebase身份驗證遷移指南》

從 Google Identity Toolkit 遷移至 Google Cloud Identity Platform

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

最新版本的 Google Identity 工具包已推出 Identity PlatformFirebase 驗證。日後,身分識別工具程式的功能將凍結,所有新功能開發作業都會在 Identity Platform 和 Firebase 驗證中完成。我們建議身分工具包開發人員在其應用程式有需要時,立即改用這些平台。

新功能

Identity Platform 與 Google Identity 工具包相比,已有大幅改善的功能:

  • 新版管理控制台

    Identity Platform 的新版開發人員控制台可讓您查看、修改及刪除使用者,這有助於對登入和註冊流程進行偵錯。主控台也可讓您設定驗證方法和自訂電子郵件範本。

  • 新的驗證方法

    Identity Platform 支援企業聯盟標準 (例如 SAML 和 OIDC),可讓您擴充軟體式服務 (SaaS) 應用程式和服務。Identity Platform 也為 GitHub、Microsoft、Yahoo 等供應商提供支援服務。您可以使用匿名登入方式建立不重複的使用者 ID,而無需使用者進行任何登入或註冊程序;這樣可讓您以一般使用者的方式發出經過驗證的 API 呼叫。使用者決定要註冊帳戶時,所有活動都會以相同的使用者 ID 保留。這種做法適用於伺服器端購物車或您想在註冊過程中,讓使用者進行互動的其他應用程式。

  • 根據《服務水準協議》和「Cloud 支援小組」安心調度資源

    Identity Platform 是以值得信賴的 Google 基礎架構打造而成,可提供服務水準協議以及 Google Cloud 的支援。這表示您可以放心地擴充服務,並依靠 Google 提供所需的彈性、可用性和擴充性。

  • 可使用所有 Firebase 服務

    Firebase 行動平台可協助您快速開發高品質應用程式、擴展用戶群及提高獲利。Firebase 由多項相輔相成的功能組成,可搭配使用,並能滿足您的需求,其中包括:行動分析雲端通訊即時資料庫檔案儲存靜態託管遠端設定、行動當機回報和 Android 測試

  • 新版 UI

    我們根據 Google 最新的使用者體驗研究,徹底重新設計了使用者介面流程。這包含密碼復原、帳戶連結、新增/現有的帳戶區別流程,這些作業通常都需要花費大量時間進行程式碼及偵錯。這個 API 整合了密碼專用 Smart Lock 功能,大幅改善了加入應用程式時的登入和註冊轉換成效。而且也支援簡單的應用程式修改作業,以滿足您的應用程式需求。此外,為了方便您進行自訂,AndroidiOS 版本也是開放原始碼。

  • 簡化伺服器設定

    在身分工具包中,我們發現許多開發人員選擇不實作電子郵件復原流程,因此使用者若忘記密碼,就無法恢復帳戶。Identity Platform 可透過電子郵件將密碼驗證、密碼重設和密碼變更給使用者,此外,您可以輕鬆為使用者自訂文字。此外,您不必再託管用於託管重新導向及完成密碼變更作業的 UI 小工具

  • 新版 SDK

    每個身分識別工具包的伺服器 API 現已內建於各個用戶端程式庫 (Android、iOS、網路)。開發人員將可登入並註冊新使用者和新使用者、存取使用者屬性、連結、更新及刪除帳戶、重設密碼,以及與固定 UI 相連結。如有需要,您可以手動建構自己的完整登入流程和此 API 的經驗。

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

    透過 Identity 工具包,應用程式會根據 Identity Toolkit 的初始驗證事件建立自己的工作階段狀態。Identity Platform 使用的後端服務會擷取更新權杖 (從驗證事件中減去更新權杖),並交換適用於 Android、iOS 和 JavaScript 的一小時長存取憑證。使用者變更密碼時,更新權杖將無法再產生新的存取權杖,而存取權會停用,直到使用者重新驗證該裝置為止。

功能差異

Identity Platform 目前不支援部分身分工具包功能,而其他功能則經過重新設計,運作方式也不同。如果這些功能對您的應用程式很重要,您可以選擇不要立即遷移。在多數情況下,這些功能對您的應用程式來說可能並不重要,或者可能會發生短暫的備援作業,讓您可以繼續進行遷移。

伺服器端差異

其核心 Identity 工具包及其基礎 REST API、帳戶驗證邏輯以及主要使用者資料庫僅經過小幅更新。不過,某些特性和整合 Identity 服務在您的服務中已有改變。

  • 識別資訊提供者

    不支援 PayPal 和 AOL。擁有這些 IDP 帳戶的使用者仍然可以使用密碼救援流程登入您的應用程式,並設定帳戶密碼。

  • 伺服器程式庫

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

  • 帳戶管理電子郵件

    密碼重設、電子郵件驗證,以及電子郵件變更訊息均可透過 Firebase 或開發人員自己的郵件伺服器執行。目前,電子郵件範本提供的使用者介面自訂功能有限,但您可以透過 Admin SDK 進一步自訂。

  • 電子郵件地址變更確認

    使用者決定變更電子郵件地址時,系統會在身分識別工具包傳送電子郵件至含有新地址的連結,以便繼續變更電子郵件地址。

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

  • IDP 推出

    Identity 工具可逐漸將識別資訊提供者加入登入系統,以便針對您的支援要求進行實驗。Firebase 驗證功能已移除這項功能。

用戶端差異

在 Identity Platform 中,Google Identity 工具包提供的功能可分為兩個元件:

  • 用戶端和伺服器 SDK

    在 Identity Platform 中,Identity Toolkit 的 REST API 提供的功能已封裝為適用於 Android、iOS 和 JavaScript 的用戶端 SDK。您可以使用 SDK 登入及註冊使用者;存取使用者個人資料資訊;連結、更新及刪除帳戶;以及透過用戶端 SDK 重設密碼,而不必透過 REST 呼叫與後端服務通訊。

  • UI 小工具

    管理登入、註冊、密碼復原和帳戶連結的所有 UI 流程都以用戶端 SDK 重建,並封裝為登入小工具。這些程式庫是適用於 iOSAndroidWeb 的開放原始碼 SDK,可讓您完全以身分識別工具完全自訂流程。

其他差異包括:

  • 工作階段與遷移

    由於工作階段在 Identity 工具包和 Identity Platform 中的管理方式不同,所以升級 SDK 時,使用者現有的工作階段會遭到終止,而使用者必須重新登入。

事前準備

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

  1. 開啟 Cloud Console,然後選取您的 Identity Toolkit 專案。

  2. 從 Marketplace 瀏覽至 Identity Platform,然後選取 [Enable Identity Platform] (啟用 Identity Platform)

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

  4. 在服務帳戶旁,依序點選「」 >「Create key」。然後在「Create private key」(建立私密金鑰) 對話方塊中,將金鑰類型設為「JSON」,然後按一下 [Create] (建立)。系統會為您下載包含服務帳戶憑證的 JSON 檔案。請在下一個步驟中用到這個 SDK 來初始化 SDK。

  5. 返回 Cloud Console。在「Providers」(供應商) 區段的「Email/Password」(電子郵件/密碼) 登入方式中,開啟「Email Templates」(電子郵件範本) 頁面。隨後,您可以自訂應用程式的範本。

    在 Identity 工具包中,當使用者重設密碼、變更電子郵件地址或驗證電子郵件地址時,您必須從 Identity Toolkit 伺服器取得 OOB 代碼,然後透過電子郵件將代碼傳送給使用者。Identity Platform 會根據您設定的範本傳送電子郵件,您無須採取其他行動。

  6. 選用:如需在伺服器上存取 Identity Platform 服務,請安裝 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')
      });
      

接著,完成您應用程式的平台遷移步驟:AndroidiOSweb

伺服器和 JavaScript

重要異動

與 Identity Toolkit 實作 Identity Platform 時有一些額外的差異。

  • 網路工作階段管理

    先前,當使用者利用 Identity Toolkit 小工具進行驗證時,系統會為用於啟動工作階段的使用者設定 Cookie。這個 Cookie 的有效期限為兩週,且可讓使用者透過帳戶管理小工具變更密碼和電子郵件地址。有些網站會使用這個 Cookie 來驗證網站上的所有其他網頁請求。 其他網站會使用 Cookie 透過其架構的 Cookie 管理系統來建立自己的 Cookie。

    Identity Platform 用戶端 SDK 現在會管理 ID 憑證,並與 Identity Platform 的後端搭配使用,讓工作階段保持最新狀態。 當重要帳戶變更 (例如使用者密碼變更) 發生時,後端會過期。ID 憑證不會自動設定為網路用戶端的 Cookie,且效期只有一小時。除非您只想使用一小時的工作階段,否則不適合使用 ID 憑證做為 Cookie 來驗證所有網頁請求。您必須改為設定事件監聽器,以便在使用者登入、取得 ID 憑證驗證憑證,並透過架構的 Cookie 管理系統來建立自己的 Cookie。

    您必須根據應用程式的安全性需求設定 Cookie 的工作階段生命週期。

  • 網站登入流程

    先前,系統會在使用者登入時啟動,將他們重新導向 accountchooser.com,以便瞭解使用者要使用的 ID。Identity Platform UI 的流程現在從登入方式清單開始,其中包括可前往 accountchooser.com 網頁使用電子郵件選項,並在 Android 上使用 hintRequest API 的電子郵件選項。此外,使用者介面中不再需要電子郵件地址。如此一來,您就能更輕鬆地支援匿名使用者、自訂驗證使用者,或是不需要電子郵件地址的使用者。

  • 帳戶管理小工具

    使用者可透過這個小工具來變更電子郵件地址、變更密碼,或是取消其帳戶與識別資訊提供者的連結。目前正在開發中。

  • 登入按鈕/小工具

    不再提供登入按鈕和使用者資訊卡等小工具。使用 Firebase Authentication API 即可輕鬆建構。

  • 沒有 signOutUrl

    您必須呼叫 firebase.auth.signOut() 並處理回呼。

  • 沒有 oobActionUrl

    電子郵件傳送作業目前是由 Identity Platform 處理,並在 Firebase 主控台中設定。

  • CSS 自訂

    UI 小工具使用 Material Design Lite 樣式,可以動態新增質感設計動畫。

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

  1. 如果您的伺服器必須使用 Identity Toolkit 憑證 (有效期限為兩週) 來管理網路使用者工作階段,則您必須轉換伺服器使用其專屬的工作階段 Cookie。

    1. 實作端點以驗證 ID 憑證及為使用者設定工作階段 Cookie。用戶端應用程式會將 Firebase ID 憑證傳送至這個端點。
    2. 如果傳入要求包含您自己的工作階段 Cookie,您可以考慮使用者經過驗證。否則,請將要求視為未驗證。
    3. 如果您不希望任何使用者遺失目前登入的工作階段,請等待兩個星期,所有 Identity 工具組憑證到期,或是為您的網頁應用程式執行雙重驗證 (如步驟 3 所述)。
  2. 接著,由於 ID 符記與 Identity 工具包憑證不同,因此您必須更新憑證驗證邏輯。將 Admin SDK 安裝至您的伺服器;如果您使用 Admin SDK 不支援的語言,請為您的環境下載 JWT 憑證驗證程式庫,並正確驗證憑證

  3. 第一次更新時,您可能仍會使用身分工具包權杖的程式碼路徑。如果您使用 iOS 或 Android 應用程式,使用者必須升級至新版應用程式,新的程式碼路徑才能正常運作。如果您不想強制使用者更新應用程式,可以新增其他伺服器驗證邏輯來檢查憑證,並判斷是否需要使用 Firebase SDK 或 Identity Toolkit SDK 來驗證權杖。如果您只有網頁應用程式,所有新的驗證要求都會轉移至 Identity Platform,因此您只需使用 ID 憑證驗證方法,

請參閱 Web API 參考資料

步驟 2:更新您的 HTML

  1. 在應用程式中加入初始化程式碼:

    1. Cloud 控制台中開啟專案。
    2. 在「providers」頁面上,按一下 [Application Setup Details]。畫面上會顯示初始化 Identity Platform 的程式碼片段。
    3. 將初始化程式碼片段複製並貼到網頁中。
  2. 將「Authentication Widget」新增至應用程式:

    <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 工具包 SDK。

  4. 如果您依賴身分工具包 ID 憑證來管理工作階段,則必須在用戶端進行以下變更:

    1. 成功使用 Identity Platform 登入後,請呼叫 firebase.auth().currentUser.getToken() 以取得 ID 符記。

    2. 將 ID 憑證傳送至後端伺服器並驗證,然後發出自己的工作階段 Cookie。

      執行敏感作業或將經過驗證的編輯要求傳送至伺服器時,請勿只仰賴工作階段 Cookie。您需要提供額外的跨網站要求偽造 (CSRF) 保護措施。

      如果您的架構未提供 CSRF 保護,防範攻擊的一種方法是使用 getToken() 取得已登入使用者的 ID 憑證,並在每個要求中加入憑證 (工作階段 Cookie 也會預設為傳送)。接著,除了工作階段架構完成的工作階段 Cookie 檢查之外,您還可以使用 Admin SDK 驗證該權杖。這樣會讓 CSRF 攻擊更難以成功,因為 ID 權杖只會使用網路儲存空間儲存,而且絕不會儲存在 Cookie 中。

    3. 「身分識別工具包」的有效期限為兩週。您可以繼續核發最近兩週的符記,或根據應用程式的安全性需求延長或縮短符記。使用者登出時,清除工作階段 Cookie。

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

  1. 「Cloud Console」中開啟「Providers」(供應商) 區段。

  2. 針對您支援的各聯合登入供應商,執行下列步驟:

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

Android

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

  1. 開啟 Cloud Console,然後選取您的 Identity Toolkit 專案。

  2. 在「Providers」(供應商) 頁面中,按一下「Application setup details」(應用程式設定詳細資料),選取「Android」分頁標籤,然後點選「Get started in Firebase」。在「Add Firebase」(新增 Firebase) 對話方塊中,提供應用程式的套件名稱和簽署憑證指紋,然後按一下 [Add App] (新增應用程式)。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 服務外掛程式:

    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:21.1.0'
    compile 'com.google.android.gms:play-services-auth:20.4.1'
    

步驟 2:移除 Identity Toolkit SDK

  1. AndroidManifest.xml 檔案中移除 Identity 工具包設定。這項資訊包含在 google-service.json 檔案中,並由 google-services 外掛程式載入。
  2. 從應用程式中移除 Identity 工具包 SDK。

步驟 3:在應用程式中加入 FirebaseUI

  1. 在應用程式中新增 FirebaseUI 驗證

  2. 在應用程式中,將身分包 SDK 的呼叫替換為 FirebaseUI 的呼叫。

iOS

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

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

    $ cd your-project directory
    $ pod init
    $ pod 'Firebase'
    
  2. 開啟 Cloud Console,然後選取您的 Identity Toolkit 專案。

  3. 在「Providers」(供應商) 頁面中,按一下「Application setup details」(應用程式設定詳細資料),選取「iOS」分頁標籤,然後點選「Get started in Firebase」。在「Add Firebase」(新增 Firebase) 對話方塊中,提供應用程式的套件名稱和簽署憑證指紋,然後按一下「Add App」(新增應用程式)。google-services.json 設定檔隨即會下載到您的電腦中。在「Add Firebase」(新增 Firebase) 對話方塊中,提供應用程式的套件 ID 和 App Store ID,然後按一下「Add App」(新增應用程式)。接著,GoogleService-Info.plist 設定檔會下載到您的電腦中。如果您的專案中有多個軟體包 ID,則每個軟體包 ID 都必須在 Firebase 主控台中進行連結,使其擁有專屬的 GoogleService-Info.plist 檔案。

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

步驟 2:移除 Identity Toolkit SDK

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

步驟 3:在應用程式中加入 FirebaseUI

  1. 在應用程式中新增 FirebaseUI 驗證

  2. 在應用程式中,將身分包 SDK 的呼叫替換為 FirebaseUI 的呼叫。