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

谷歌标识工具包的最新版本已经发布的认证平台火力地堡认证。展望未来,Identity Toolkit 的功能工作将被冻结;所有新功能开发都将在 Identity Platform 和 Firebase 身份验证上完成。我们鼓励 Identity Toolkit 开发人员在其应用程序可行时尽快迁移到这些平台。

新功能

与 Google Identity Toolkit 相比,Identity Platform 已经有了显着的功能增强:

  • 新的管理控制台

    身份平台有一个新的开发者控制台,它允许您查看,修改和删除用户;这有助于调试您的登录和注册流程。控制台还允许您配置身份验证方法和自定义电子邮件模板。

  • 新的认证方法

    Identity Platform 支持企业联合标准,例如 SAML 和 OIDC,使您能够扩展 SaaS 应用程序和服务。 Identity Platform 还为 GitHub、Microsoft、Yahoo 等提供商提供支持。您可以使用匿名登录来创建唯一的用户 ID,而无需用户进行任何登录或注册过程;这允许您像对普通用户一样进行经过身份验证的 API 调用。当用户决定注册一个帐户时,所有活动都使用相同的用户 ID 保留。这对于服务器端购物车或其他应用程序等场景很有价值,在这些应用程序中,您希望在通过注册流程发送用户之前吸引用户。

  • 通过服务级别协议和云支持自信地扩展

    身份平台是建立在信任的基础设施谷歌,并提供服务级别协议从谷歌云和支持。这意味着您可以放心地扩展您的服务,并依靠 Google 来提供您需要的弹性、可用性和可扩展性。

  • 访问所有 Firebase

    Firebase 是一个移动平台,可帮助您快速开发优质应用、扩大用户群并赚取更多收入。火力地堡由互补的功能,你可以混合和匹配,以满足您的需求,包括对基础设施了:移动分析云通讯实时数据库文件存储静态主机远程配置,移动崩溃报告和Android测试

  • 更新的用户界面

    我们根据 Google 的最新 UX 研究完全重建了 UI 流程。这包括密码恢复、帐户链接、新/现有帐户消歧流程,这些流程通常需要花费大量时间进行编码和调试。它集成了智能锁的密码在Android上,这已显著提高登录和参与注册转化应用。它也支持方便的主题修改,满足您的应用,并最大可定制的安卓iOS的版本已经开源了。

  • 简化的服务器设置

    使用 Identity Toolkit,我们看到许多开发人员选择不实施电子邮件恢复流程,这使得他们的用户在忘记密码时无法恢复他们的帐户。认证平台可以发送电子邮件验证,密码重置,修改后的密码信息给用户,文本可以很容易地定制为您的用户。此外,您不再需要举办UI部件主办重定向,完成密码修改操作。

  • 新 SDK

    Identity Toolkit 的所有服务器 API 现在都可以在我们的每个客户端库(Android、iOS、Web)中使用。开发人员将能够登录和注册新老用户、访问用户属性、链接、更新和删除帐户、重置密码等,而无需绑定到固定的 UI。如果您愿意,您可以在此 API 之上手动构建您自己的整个登录流程和体验。

  • 移动应用的会话管理

    使用 Identity Toolkit,应用程序根据来自 Identity Toolkit 的初始身份验证事件创建自己的会话状态。 Identity Platform 使用后端服务获取刷新令牌,从身份验证事件中生成,并将其交换为 Android、iOS 和 JavaScript 的长达一小时的访问令牌。当用户更改其密码时,刷新令牌将不再能够生成新的访问令牌,从而禁用访问,直到用户在该设备上重新进行身份验证。

功能差异

某些 Identity Toolkit 功能目前在 Identity Platform 中不可用,而其他功能已经过重新设计并且工作方式有所不同。如果这些功能对您的应用很重要,您可以选择不立即迁移。在许多情况下,这些功能对您的应用程序可能并不重要,或者可能有简单的回退,使您能够继续进行迁移。

服务器端差异

核心 Identity Toolkit 服务及其底层 REST API、帐户验证逻辑和主要用户数据库仅进行了少量更新。但是某些功能以及将 Identity Platform 集成到服务中的方式已经发生了变化。

  • 身份提供者

    不支持 Paypal 和 AOL。拥有来自这些 IDP 帐户的用户仍然可以使用密码恢复流程登录您的应用程序并为其帐户设置密码。

  • 服务器库

    目前,有管理的SDK可用于Java,Node.js的,巨蟒,围棋和C#。

  • 帐户管理电子邮件

    密码重置、电子邮件验证和电子邮件更改消息可以由 Firebase 或从开发人员自己的邮件服务器执行。目前,电子邮件模板提供从UI只有有限的定制,但可以通过进一步定制管理软件开发工具包

  • 电子邮件地址更改确认

    在 Identity Toolkit 中,当用户决定更改他们的电子邮件地址时,它会向新地址发送一封电子邮件,其中包含一个链接以继续电子邮件地址更改流程。

    Firebase 通过向旧电子邮件地址发送带有还原更改链接的撤销电子邮件来确认电子邮件地址更改。

  • IDP 推出

    Identity Toolkit 能够逐渐将身份提供者添加到您的登录系统中,以便您可以试验对支持请求的影响。此功能已在 Firebase 身份验证中删除。

客户端差异

在 Identity Platform 中,Google Identity Toolkit 提供的功能分为两个组件:

  • 客户端和服务器 SDK

    在 Identity Platform 中,Identity Toolkit 的 REST API 提供的功能已打包到可用于 Android、iOS 和 JavaScript 的客户端 SDK 中。可以使用SDK登录和注册用户;访问用户个人资料信息;链接、更新和删除帐户;并使用客户端 SDK 重置密码,而不是通过 REST 调用与后端服务通信。

  • 用户界面小部件

    管理登录、注册、密码恢复和帐户链接的所有 UI 流都已使用客户端 SDK 重建并打包为登录小部件。它们可作为开源软件开发工具包的的iOS安卓网页,并让您完全自主的方式不可能身份工具包流。

其他差异包括:

  • 会话和迁移

    由于 Identity Toolkit 和 Identity Platform 中会话的管理方式不同,升级 SDK 后您用户的现有会话将终止,您的用户必须重新登录。

在你开始之前

在从 Identity Toolkit 迁移到 Identity Platform 之前,您必须:

  1. 打开云端控制台,选择您的身份工具包项目。

  2. 从市场,浏览到认证平台,并选择“启用标识平台”

  3. 开放服务帐户页面。在这里您可以看到您之前为 Identity Toolkit 配置的服务帐户。

  4. 旁边的服务帐户,单击 >创建关键。然后,在创建私有密钥对话框,设置密钥类型为JSON,然后单击创建。系统会为您下载一个包含您的服务帐号凭据的 JSON 文件。您将需要它来在下一步中初始化 SDK。

  5. 返回到云控制台。在供应商部分,“电子邮件/密码”登录方法中,打开电子邮件模板页面。然后,您可以自定义应用程序的模板。

    在 Identity Toolkit 中,当用户重置密码、更改电子邮件地址或验证其电子邮件地址时,您需要从 Identity Toolkit 服务器获取 OOB 代码,然后通过电子邮件将代码发送给用户。 Identity Platform 会根据您配置的模板发送电子邮件,无需其他操作。

  6. 可选:如果您需要在服务器上访问身份平台服务,安装火力地堡SDK。

    1. 您可以安装Node.js的管理员SDK npm

      $ 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')
      });
      

接下来,完成您的应用程序的平台迁移的步骤:安卓iOS版网络

服务器和 JavaScript

显着变化

Identity Toolkit 中 Identity Platform 的 Web 实现存在许多其他差异。

  • 网络会话管理

    以前,当用户使用认证标识工具包插件,一个cookie是为这是用来给用户设置引导会话。此 cookie 的有效期为两周,用于允许用户使用帐户管理小部件更改密码和电子邮件地址。某些站点使用此 cookie 来验证站点上的所有其他页面请求。其他站点使用 cookie 通过其框架的 cookie 管理系统创建自己的 cookie。

    身份平台客户端软件开发工具包现在管理标识令牌和工作与身份平台的后端,以保持新鲜的会话。当发生重要的帐户更改(如用户密码更改)时,后端会使会话过期。 ID 令牌不会在 Web 客户端上自动设置为 cookie,并且只有一个小时的生命周期。除非您只想要一个小时的会话,否则 ID 令牌不适合用作 cookie 来验证您的所有页面请求。相反,你将需要建立一个监听器用于当用户登录,获取ID令牌验证令牌,并通过创建你自己的框架的Cookie管理系统自己的cookie。

    您需要根据应用程序的安全需求设置 cookie 的会话生存期。

  • 网页登录流程

    以前,用户被重定向到accountchooser.com当登录已启动学习什么标识的用户想使用。身份平台UI的流程现在开始的名单登记的方法,其中包括去到电子邮件选项accountchooser.com为Web和使用hintRequest API在Android上。此外,UI 中不再需要电子邮件地址。这将使支持匿名用户、自定义身份验证用户或来自不需要电子邮件地址的提供商的用户变得更加容易。

  • 账户管理小工具

    此小部件为用户提供了一个用户界面,可以更改电子邮件地址、更改密码或取消其帐户与身份提供商的链接。它目前正在开发中。

  • 登录按钮/小部件

    不再提供登录按钮和用户卡等小部件。使用 Firebase Authentication API 可以非常轻松地构建它们。

  • 没有登出网址

    您将需要调用firebase.auth.signOut()和处理回调。

  • 没有 oobActionUrl

    电子邮件发送现在由 Identity Platform 处理,并在 Firebase 控制台中进行配置。

  • CSS 定制

    Widget使用的UI材质设计精简版的造型,它动态地添加材料设计动画。

第 1 步:更改服务器代码

  1. 如果您的服务器依赖 Identity Toolkit 令牌(有效期为两周)来管理 Web 用户会话,则您需要将服务器转换为使用其自己的会话 cookie。

    1. 实施端点验证ID令牌,并设置为用户会话cookie。客户端应用程序将 Firebase ID 令牌发送到此端点。
    2. 如果传入的请求包含您自己的会话 cookie,您可以认为用户已通过身份验证。否则,将请求视为未经身份验证。
    3. 如果您不希望您的任何用户丢失他们现有的登录会话,您应该等待两周以让所有 Identity Toolkit 令牌过期,或者也按照下面步骤 3 中的描述对您的 Web 应用程序进行双令牌验证。
  2. 接下来,由于 Id 令牌与 Identity Toolkit 令牌不同,您必须更新您的令牌验证逻辑。安装管理SDK到你的服务器;或者,如果使用不是由管理SDK支持的语言,下载JWT令牌验证库为您的环境和适当的验证令牌

  3. 当您第一次进行上述更新时,您可能仍然拥有依赖 Identity Toolkit 令牌的代码路径。如果您有 iOS 或 Android 应用程序,用户将需要升级到应用程序的新版本才能使新的代码路径工作。如果您不想强制您的用户更新您的应用,您可以添加额外的服务器验证逻辑来​​检查令牌并确定它是否需要使用 Firebase SDK 或 Identity Toolkit SDK 来验证令牌。如果您只有一个 Web 应用程序,所有新的身份验证请求都将转移到 Identity Platform,因此,您只需使用 Id 令牌验证方法。

请参阅网页API参考

第 2 步:更新您的 HTML

  1. 将初始化代码添加到您的应用程序:

    1. 打开在项目云端控制台
    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. 与认证平台成功登录后,通过调用获得一个ID令牌firebase.auth().currentUser.getToken()

    2. 将 Id 令牌发送到后端服务器,对其进行验证,然后发布您自己的会话 cookie。

      在执行敏感操作或向您的服务器发送经过身份验证的编辑请求时,不要仅仅依赖会话 cookie。您将需要提供额外的跨站点请求伪造 (CSRF) 保护。

      如果你的框架不能提供CSRF保护,以防止攻击的一种方式将得到一个ID令牌的签署以使用者getToken()和包括令牌与每个请求(会话cookie也将被默认发送) .然后,除了会话 cookie 检查(后端框架已完成)之外,您还可以使用 Admin SDK 验证该令牌。这将使 CSRF 攻击更难成功,因为 Id 令牌仅使用 Web 存储存储,而从不存储在 cookie 中。

    3. Identity Toolkit 令牌的有效期为两周。您可能希望继续发行持续两周的令牌,或者您可能希望根据应用程序的安全要求延长或缩短它。当用户退出时,清除会话 cookie。

第 3 步:更新 IDP 重定向 URL

  1. 云端控制台,打开供应商部分。

  2. 对于您支持的每个联合登录提供程序,请执行以下操作:

    1. 单击登录提供商的名称。
    2. 复制 OAuth 重定向 URI。
    3. 在登录提供商的开发者控制台中,更新 OAuth 重定向 URI。

安卓

第 1 步:使用 Firebase 将 Identity Platform 添加到您的应用

  1. 打开云端控制台,并选择您的身份工具包项目。

  2. 在提供程序页,单击应用程序设置的详细信息,选择Android选项卡,然后单击火力地堡入门。在添加火力地堡对话框,提供应用程式的套件名称和签名证书的指纹,然后单击添加应用程序。在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文件,添加一个依赖于包括谷歌的服务插件:

    buildscript {
     dependencies {
       // Add this line
       classpath 'com.google.gms:google-services:3.0.0'
     }
    }
    
  6. 在您的应用程序的App级build.gradle文件( <var>my-project</var>/<var>app-module</var>/build.gradle ),添加以下行后Android的摇篮插件启用谷歌服务插件:

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

    在谷歌的服务插件使用google-services.json文件来配置你的应用程序中使用火力地堡。

  7. 此外,在应用级build.gradle文件中添加火力地堡认证依赖性:

    compile 'com.google.firebase:firebase-auth:21.0.1'
    compile 'com.google.android.gms:play-services-auth:19.2.0'
    

步骤 2:删除 Identity Toolkit SDK

  1. 从删除Identity工具包配置AndroidManifest.xml文件。此信息包含在google-service.json文件,并通过谷歌的服务插件加载。
  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. 打开云端控制台,并选择您的身份工具包项目。

  3. 在提供程序页,单击应用程序设置详细信息,选择iOS的选项卡,然后单击火力地堡入门。在添加火力地堡对话框,提供应用程式的套件名称和签名证书的指纹,然后单击添加应用程序。在google-services.json然后下载配置文件到您的计算机。在添加火力地堡对话框中,提供您的应用程序的包ID和App Store的ID,然后单击添加应用程序。该GoogleService-Info.plist然后下载配置文件到您的计算机。如果你在你的项目中有多个包的ID,每个包ID必须在火力地堡控制台连接,因此可以有自己的GoogleService-Info.plist文件。

  4. 将配置文件复制到 Xcode 项目的根目录,并将其添加到所有目标。

步骤 2:删除 Identity Toolkit SDK

  1. 删除GoogleIdentityToolkit从您的应用程序的Podfile。
  2. 运行该pod install命令。

第 3 步:将 FirebaseUI 添加到您的应用

  1. 添加FirebaseUI验证应用程式。

  2. 在您的应用中,将对 Identity Toolkit SDK 的调用替换为对 FirebaseUI 的调用。