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 Kit 發布為 Identity PlatformFirebase 驗證。日後,身分識別工具程式的功能將凍結,所有新功能開發作業都會在 Identity Platform 和 Firebase 驗證中完成。我們建議身分套件開發人員在應用程式很有需要的情況下,立即改用這些平台。

新功能

Identity Platform 比 Google Identity 工具包有重大的功能改善:

  • 新版管理控制台

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

  • 新的驗證方法

    Identity Platform 支援企業聯合標準 (例如 SAML 和 OIDC),可讓您擴充軟體式服務 (SaaS) 應用程式和服務。Identity Platform 也為 GitHub、Microsoft、Yahoo 等供應商提供支援服務。您可以使用匿名登入功能,建立不重複的使用者 ID,不必要求使用者完成任何登入或註冊程序;這樣可讓您以一般使用者的身分進行經過驗證的 API 呼叫。使用者決定要註冊帳戶時,所有活動都會以相同的使用者 ID 保留。對於伺服器端購物車或其他想要讓使用者在註冊流程中與其互動的使用者等情況,這項功能非常實用。

  • 依據《服務水準協議》和「雲端支援」安心調度資源

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

  • 可使用所有 Firebase 服務

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

  • 更新的使用者介面

    我們根據 Google 最新的使用者體驗研究,徹底重新設計了使用者介面流程。這包含密碼復原、帳戶連結、新/現有的帳戶去化流程 (通常用於編寫程式碼和偵錯)。這個 API 整合了密碼專用 Smart Lock功能,大幅改善了加入應用程式的登入和註冊轉換成效。而且也支援與應用程式相符的簡易主題修改內容,而為了盡可能自訂性,AndroidiOS 版本也採用開放原始碼。

  • 簡化伺服器設定

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

  • 新版 SDK

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

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

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

功能差異

Identity Platform 功能目前無法使用某些身分工具包,而其他功能則經過重新設計,運作方式也不同。如果這些功能對您的應用程式非常重要,您可以選擇不要立即遷移。在許多情況下,這些功能對您的應用程式來說可能不是重要,或者容易產生備用廣告,因此您可以繼續遷移。

伺服器端差異

含有基本 REST API、帳戶驗證邏輯和主要使用者資料庫的核心 Identity 工具包服務僅經過些微更新。不過,部分 Identity 功能整合到服務中的方式已有所改變,

  • 識別資訊提供者

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

  • 伺服器程式庫

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

  • 帳戶管理電子郵件

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

  • 電子郵件地址變更確認

    當使用者決定變更電子郵件地址時,如果使用者決定變更電子郵件地址,系統就會傳送電子郵件至新的地址,以便繼續變更電子郵件地址。

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

  • IDP 推出

    Identity Toolkit 可以逐步將識別資訊提供者新增至登入系統,以便針對您的支援要求進行實驗。這項功能已在 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 Toolkit 和 Identity Platform 中的管理方式不同,所以您的使用者和#39;升級 SDK 後,現有的工作階段就會終止,而使用者必須重新登入。

事前準備

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

  1. 開啟 Cloud Console,然後選取您的「身分識別工具包」專案。

  2. 從 Marketplace 前往 Identity Platform,然後選取 'Enable Identity Platform'

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

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

  5. 返回 Cloud Console。在「Providers」(供應商) 區段的「##9;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 即可存取 Firebase:

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

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

伺服器和 JavaScript

重要異動

在 Identity Identity 的 Identity Platform 網頁版實作中,有一些額外差異。

  • 網路工作階段管理

    先前,當使用者透過身分識別工具包進行驗證時,系統會為使用者設定啟動工作階段的 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 的電子郵件選項。此外,使用者介面中不再需要電子郵件地址。如此一來,您就能更輕鬆地支援匿名使用者、自訂驗證使用者,或是不需要電子郵件地址的提供者的使用者。

  • 帳戶管理小工具

    這個小工具提供 UI,讓使用者能變更電子郵件地址、變更密碼,或將帳戶與識別資訊提供者取消連結。目前正在開發中。

  • 登入按鈕/小工具

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

  • 沒有 signOutUrl

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

  • 沒有 oobActionUrl

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

  • 自訂 CSS

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

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

  1. 如果您的伺服器仰賴 Identity Toolkit 權杖 (有效期限為兩週) 來管理網路使用者工作階段,您就必須將伺服器轉換為使用自身的工作階段 Cookie。

    1. 實作端點以驗證 ID 權杖,及為使用者設定工作階段 Cookie。用戶端應用程式會將 Firebase ID 權杖傳送至這個端點。
    2. 如果傳入要求包含您自己的工作階段 Cookie,您可以考慮使用者已通過驗證。否則,請將要求視為未驗證。
    3. 如果不希望任何使用者遺失已登入帳戶的現有工作階段,請等待兩週的時間,讓所有 Identity Kit 權杖過期,或是為您的網頁應用程式執行雙重驗證,如步驟 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 Console 中開啟專案。
    2. 在「providers」頁面上,按一下「Application Setup Details」。系統會顯示初始化 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 工具包 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. 在「供應商」頁面中,按一下「應用程式設定」,選取「Android」分頁標籤,然後點選「開始使用 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.0'
    

步驟 2:移除 Identity 工具包 SDK

  1. AndroidManifest.xml 檔案中移除 Identity 工具包設定。這項資訊會包含在 google-service.json 檔案中,並由 Google 服務外掛程式載入。
  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」。在「新增 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 工具包 SDK

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

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

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

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