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 на аутентификацию Firebase

Последняя версия Google Identity Toolkit была выпущена как Firebase Authentication . В дальнейшем работа над функциями в Identity Toolkit будет заморожена, а разработка всех новых функций будет выполняться для аутентификации Firebase. Мы рекомендуем разработчикам Identity Toolkit перейти на аутентификацию Firebase, как только это станет возможным для их приложений; тем не менее, Identity Toolkit продолжает работать и не будет объявлен устаревшим без дополнительного объявления.

Новые особенности

Firebase Authentication уже имеет ряд существенных улучшений по сравнению с Google Identity Toolkit:

  • Доступ ко всему Firebase

    Firebase — это мобильная платформа, которая помогает вам быстро разрабатывать высококачественные приложения, расширять базу пользователей и зарабатывать больше денег. Firebase состоит из дополнительных функций, которые вы можете комбинировать в соответствии со своими потребностями, и включает в себя инфраструктуру для: мобильной аналитики , обмена сообщениями в облаке , базы данных в реальном времени , хранения файлов , статического хостинга , удаленной настройки , отчетов о сбоях мобильных устройств и тестирования Android.

  • Обновленные интерфейсы

    Мы полностью перестроили потоки пользовательского интерфейса на основе последних исследований UX Google. Это включает в себя восстановление пароля, привязку учетных записей, потоки устранения неоднозначности новых/существующих учетных записей, которые часто требуют значительного времени для написания кода и отладки. Он интегрирует Smart Lock для паролей на Android, что значительно улучшило конверсию входа и регистрации для участвующих приложений . Он также поддерживает простые модификации темы в соответствии с вашим приложением, а для максимальной настраиваемости версии для Android и iOS имеют открытый исходный код.

  • Упрощенная настройка сервера

    Мы упростили для разработчиков использование аутентификации Firebase. С Identity Toolkit мы увидели, что многие разработчики предпочли не реализовывать процесс восстановления электронной почты, из-за чего их пользователи не могли восстановить свои учетные записи, если они забыли свой пароль. Firebase Authentication может отправлять сообщения о подтверждении электронной почты, сбросе пароля и изменении пароля пользователю, а текст можно легко настроить для ваших пользователей. Кроме того, вам больше не нужно размещать виджеты пользовательского интерфейса для размещения перенаправлений и выполнения операций смены пароля.

  • Новая консоль администратора

    Firebase имеет новую консоль разработчика , а раздел «Аутентификация» позволяет просматривать, изменять и удалять пользователей. Это может очень помочь в отладке процессов входа и регистрации. Консоль также позволяет настраивать методы аутентификации и шаблоны электронной почты.

  • Новые SDK

    Все серверные API Identity Toolkit теперь доступны в каждой из наших клиентских библиотек (Android, iOS, Интернет). Разработчики смогут входить и регистрировать старых и новых пользователей, получать доступ к свойствам пользователей, связывать, обновлять и удалять учетные записи, сбрасывать пароли и т. д. без привязки к фиксированному пользовательскому интерфейсу. При желании вы можете вручную создать свой собственный процесс входа и взаимодействия на основе этого API.

  • Управление сессиями для мобильных приложений

    С помощью Identity Toolkit приложения создавали собственное состояние сеанса на основе исходного события проверки подлинности из Identity Toolkit. Firebase Auth использует серверную службу, которая берет токен обновления, полученный из события аутентификации, и обменивает его на часовые токены доступа для Android, iOS и JavaScript. Когда пользователь меняет свой пароль, токены обновления больше не смогут создавать новые токены доступа, тем самым отключая доступ до тех пор, пока пользователь не выполнит повторную аутентификацию на этом устройстве.

  • Анонимная и GitHub-аутентификация

    Firebase Authentication поддерживает два новых типа аутентификации: GitHub и анонимный. Анонимный вход можно использовать для создания уникального идентификатора пользователя, не требуя от пользователя прохождения какого-либо процесса входа или регистрации. С анонимным пользователем теперь вы можете выполнять аутентифицированные вызовы API, как и с обычным пользователем. Когда пользователь решает зарегистрировать учетную запись, все действия сохраняются с тем же идентификатором пользователя. Это отлично подходит для таких ситуаций, как корзина покупок на стороне сервера или любое приложение, где вы хотите привлечь пользователя, прежде чем отправить его через процесс регистрации.

Отличия функций

Некоторые функции Identity Toolkit в настоящее время недоступны в Firebase Authentication, в то время как другие функции были переработаны и работают по-другому. Вы можете отказаться от немедленной миграции, если эти функции важны для вашего приложения. Во многих случаях эти функции могут быть не важны для вашего приложения или могут быть простые резервные варианты, которые позволят вам продолжить миграцию.

Различия на стороне сервера

Базовая служба Identity Toolkit с лежащими в ее основе API-интерфейсами REST, логикой проверки учетной записи и основной базой данных пользователей претерпела лишь незначительные обновления. Но некоторые функции и способ интеграции Firebase Authentication в ваш сервис изменились.

  • Поставщики удостоверений

    Paypal и AOL не поддерживаются. Пользователи с учетными записями от этих IDP могут по-прежнему входить в ваше приложение с помощью процедуры восстановления пароля и устанавливать пароль для своей учетной записи.

  • Серверные библиотеки

    В настоящее время доступны SDK администратора Firebase для Java, Node.js, Python, Go и C#.

  • Электронные письма для управления аккаунтом

    Сброс пароля, проверка электронной почты и сообщения об изменении электронной почты могут выполняться с помощью Firebase или с собственного почтового сервера разработчика. В настоящее время шаблоны электронной почты Firebase предлагают лишь ограниченную настройку.

  • Подтверждение смены адреса электронной почты

    В Identity Toolkit, когда пользователь решает изменить свой адрес электронной почты, он отправляет электронное письмо на новый адрес со ссылкой для продолжения процесса изменения адреса электронной почты.

    Firebase подтверждает изменение адреса электронной почты, отправляя электронное письмо с отзывом на старый адрес электронной почты со ссылкой для отмены изменения.

  • Развертывание IDP

    Identity Toolkit позволяет постепенно добавлять поставщиков удостоверений в вашу систему входа, чтобы вы могли поэкспериментировать с влиянием на ваши запросы в службу поддержки. Эта функция была удалена в Firebase Authentication.

Различия на стороне клиента

В Firebase функции, предоставляемые Google Identity Toolkit, разделены на два компонента:

  • SDK аутентификации Firebase

    В Firebase Authentication функции, предоставляемые REST API Identity Toolkit, упакованы в клиентские SDK, доступные для Android, iOS и JavaScript. Вы можете использовать SDK для входа и регистрации пользователей; получить доступ к информации профиля пользователя; связывать, обновлять и удалять учетные записи; и сбрасывать пароли с помощью клиентского SDK вместо связи с серверной службой через вызовы REST.

  • Аутентификация FirebaseUI

    Все потоки пользовательского интерфейса, которые управляют входом в систему, регистрацией, восстановлением пароля и привязкой учетных записей, были перестроены с использованием SDK Frebase Authentication. Они доступны в виде SDK с открытым исходным кодом для iOS и Android, что позволяет вам полностью настраивать потоки способами, недоступными с помощью Identity Toolkit.

Дополнительные отличия включают:

  • Сессии и миграция

    Поскольку сеансы управляются по-разному в Identity Toolkit и Firebase Authentication, существующие сеансы ваших пользователей будут прерваны после обновления SDK, и вашим пользователям придется снова входить в систему.

Прежде чем вы начнете

Прежде чем вы сможете перейти с Identity Toolkit на Firebase Authentication, вы должны

  1. Откройте консоль Firebase , нажмите « Импортировать проект Google» и выберите свой проект Identity Toolkit.

  2. Нажмите « » > «Разрешения» , чтобы открыть страницу IAM и администратора.

  3. Откройте страницу учетных записей служб . Здесь вы можете увидеть учетную запись службы, которую вы ранее настроили для Identity Toolkit.

  4. Рядом с сервисным аккаунтом нажмите > Создать ключ . Затем в диалоговом окне « Создать закрытый ключ » установите для параметра «Тип ключа» значение JSON и нажмите « Создать ». Для вас загружается файл JSON, содержащий учетные данные вашей учетной записи службы. Это понадобится вам для инициализации SDK на следующем шаге.

  5. Вернитесь в консоль Firebase . В разделе «Аутентификация» откройте страницу « Шаблоны электронной почты ». На этой странице настройте шаблоны электронной почты вашего приложения.

    В Identity Toolkit, когда пользователи сбрасывали пароли, меняли адреса электронной почты и подтверждали свои адреса электронной почты, вам нужно было получить код OOB с сервера Identity Toolkit, а затем отправить код пользователям по электронной почте. Firebase отправляет электронные письма на основе настроенных вами шаблонов без дополнительных действий.

  6. Необязательно : если вам нужен доступ к службам Firebase на вашем сервере, установите Firebase SDK.

    1. Вы можете установить модуль Firebase Node.js с помощью 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')
      });
      

Затем выполните шаги миграции для платформы вашего приложения: Android , iOS , Интернет .

Серверы и JavaScript

Заметные изменения

Есть ряд дополнительных отличий в веб-реализации Firebase от Identity Toolkit.

  • Управление веб-сеансами

    Раньше, когда пользователь проходил аутентификацию с помощью виджета Identity Toolkit , для пользователя устанавливался файл cookie, который использовался для начальной загрузки сеанса . Срок действия этого файла cookie составлял две недели, и он использовался для того, чтобы пользователь мог использовать виджет управления учетной записью для изменения пароля и адреса электронной почты. Некоторые сайты использовали этот файл cookie для аутентификации всех других запросов страниц на сайте. Другие сайты использовали этот файл cookie для создания своих собственных файлов cookie через систему управления файлами cookie своего фреймворка.

    Клиентские SDK Firebase теперь управляют токенами Firebase ID и работают с серверной частью Firebase Authentication, чтобы поддерживать сеанс в актуальном состоянии. Серверная часть завершает сеансы, когда происходят важные изменения учетной записи (например, изменения пароля пользователя). Токены Firebase ID не устанавливаются автоматически в качестве файлов cookie в веб-клиенте, и их срок действия составляет всего час. Если вы не хотите, чтобы сеансы длились всего час, токены Firebase ID не подходят для использования в качестве файла cookie для проверки всех ваших запросов страниц. Вместо этого вам нужно будет настроить прослушиватель, когда пользователь входит в систему, получить токен Firebase ID , проверить токен и создать свой собственный файл cookie с помощью системы управления файлами cookie вашего фреймворка.

    Вам нужно будет установить время жизни сеанса вашего файла cookie в зависимости от потребностей безопасности вашего приложения.

  • Процедура веб-входа

    Раньше пользователи перенаправлялись на accountchooser.com при входе в систему, чтобы узнать, какой идентификатор пользователь хочет использовать. Поток пользовательского интерфейса Firebase Auth теперь начинается со списка методов входа, включая вариант электронной почты, который переходит на accountchooser.com для Интернета и использует API hintRequest на Android. Кроме того, адреса электронной почты больше не требуются в пользовательском интерфейсе Firebase. Это упростит поддержку анонимных пользователей, пользователей с пользовательской аутентификацией или пользователей от провайдеров, которым не требуются адреса электронной почты.

  • Виджет управления аккаунтом

    Этот виджет предоставляет пользователям пользовательский интерфейс для изменения адресов электронной почты, смены пароля или отключения их учетных записей от поставщиков удостоверений. В настоящее время он находится в стадии разработки.

  • Кнопка входа/виджет

    Такие виджеты, как кнопка входа и карточка пользователя, больше не предоставляются. Их можно очень легко создать с помощью Firebase Authentication API.

  • Нет подписиOutUrl

    Вам нужно будет вызвать firebase.auth.signOut() и обработать обратный вызов.

  • Нет oobActionUrl

    Отправка электронной почты теперь обрабатывается Firebase и настраивается в консоли Firebase.

  • Настройка CSS

    FirebaseUI использует стиль Material Design Lite , который динамически добавляет анимацию Material Design.

Шаг 1: Изменить код сервера

  1. Если ваш сервер использует токен Identity Toolkit (действителен в течение двух недель) для управления сеансами веб-пользователей, вам необходимо преобразовать сервер для использования собственного файла cookie сеанса.

    1. Реализуйте конечную точку для проверки токена Firebase ID и настройки файла cookie сеанса для пользователя. Клиентское приложение отправляет токен Firebase ID на эту конечную точку.
    2. Если входящий запрос содержит ваш собственный файл cookie сеанса, вы можете считать пользователя аутентифицированным. В противном случае обработайте запрос как неаутентифицированный.
    3. Если вы не хотите, чтобы кто-либо из ваших пользователей потерял свои существующие сеансы входа в систему, вам следует подождать две недели, пока истечет срок действия всех токенов Identity Toolkit, или также выполнить двойную проверку токена для вашего веб-приложения, как описано ниже в шаге 3.
  2. Далее, поскольку токены Firebase отличаются от токенов Identity Toolkit, необходимо обновить логику проверки токенов. Установите Firebase Server SDK на свой сервер; или, если вы используете язык, не поддерживаемый Firebase Server SDK, загрузите библиотеку проверки токена JWT для своей среды и правильно проверьте токен .

  3. При первом выполнении указанных выше обновлений у вас могут быть пути кода, которые зависят от токенов Identity Toolkit. Если у вас есть приложения для iOS или Android, пользователям необходимо будет перейти на новую версию приложения, чтобы новые пути кода работали. Если вы не хотите, чтобы ваши пользователи обновляли ваше приложение, вы можете добавить дополнительную логику проверки сервера, которая проверяет токен и определяет, нужно ли использовать Firebase SDK или Identity Toolkit SDK для проверки токена. Если у вас есть только веб-приложение, все новые запросы на аутентификацию будут перенесены в Firebase, и поэтому вам нужно будет использовать только методы проверки токена Firebase.

См. Справочник по веб-API Firebase .

Шаг 2. Обновите HTML-код

  1. Добавьте код инициализации Firebase в свое приложение:

    1. Откройте свой проект в консоли Firebase .
    2. На странице «Обзор» нажмите « Добавить приложение » , затем нажмите « Добавить Firebase в ваше веб-приложение ». Отображается фрагмент кода, который инициализирует Firebase.
    3. Скопируйте и вставьте фрагмент инициализации на свою веб-страницу.
  2. Добавьте аутентификацию FirebaseUI в свое приложение:

    <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. Удалите SDK Identity Toolkit из своего приложения.

  4. Если вы использовали токен идентификатора Identity Toolkit для управления сеансом, вы должны внести следующие изменения на стороне клиента:

    1. После успешного входа в Firebase получите токен Firebase ID, вызвав firebase.auth().currentUser.getToken() .

    2. Отправьте токен Firebase ID на внутренний сервер, подтвердите его и создайте собственный файл cookie сеанса.

      Не полагайтесь исключительно на файл cookie сеанса при выполнении конфиденциальных операций или отправке аутентифицированных запросов на редактирование на ваш сервер. Вам потребуется обеспечить дополнительную защиту от подделки межсайтовых запросов (CSRF).

      Если ваша платформа не обеспечивает защиту CSRF, одним из способов предотвращения атаки будет получение токена Firebase ID для вошедшего в систему пользователя с помощью getToken() и включение токена в каждый запрос (файл cookie сеанса также будет отправлен по умолчанию). ). Затем вы должны проверить этот токен с помощью SDK сервера Firebase в дополнение к проверке файлов cookie сеанса, которую выполнила ваша внутренняя структура. Это затруднит успех CSRF-атак, поскольку токен Firebase ID хранится только в веб-хранилище, а не в файле cookie.

    3. Токены Identity Toolkit действительны в течение двух недель. Вы можете продолжить выпуск токенов на две недели или сделать их длиннее или короче в зависимости от требований безопасности вашего приложения. Когда пользователь выходит из системы, очищайте файл cookie сеанса.

Шаг 3. Обновите URL-адреса перенаправления поставщика идентификационной информации.

  1. В консоли Firebase откройте раздел «Аутентификация» и перейдите на вкладку « Метод входа ».

  2. Для каждого поставщика федеративного входа, который вы поддерживаете, выполните следующие действия:

    1. Щелкните имя поставщика услуг входа.
    2. Скопируйте URI перенаправления OAuth.
    3. В консоли разработчика поставщика услуг входа обновите URI перенаправления OAuth.

Андроид

Шаг 1. Добавьте Firebase в свое приложение.

  1. Откройте консоль Firebase и выберите проект Identity Toolkit, который вы уже импортировали.

  2. На странице «Обзор» нажмите « Добавить приложение » , а затем нажмите « Добавить Firebase в свое приложение для Android» . В диалоговом окне «Добавить 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 ) добавьте следующую строку внизу, чтобы включить google- плагин сервисов:

    // Add to the bottom of the file
    apply plugin: 'com.google.gms.google-services'
    

    Плагин google-services.json для настройки вашего приложения на использование Firebase.

  7. Также в файле build.gradle на уровне приложения добавьте зависимость Firebase Authentication:

    compile 'com.google.firebase:firebase-auth:21.1.0'
    compile 'com.google.android.gms:play-services-auth:20.4.0'
    

Шаг 2. Удалите SDK Identity Toolkit

  1. Удалите конфигурацию Identity Toolkit из файла AndroidManifest.xml . Эта информация включается в файл google-service.json и загружается подключаемым модулем google-services.
  2. Удалите SDK Identity Toolkit из своего приложения.

Шаг 3. Добавьте FirebaseUI в свое приложение.

  1. Добавьте аутентификацию FirebaseUI в свое приложение.

  2. В своем приложении замените вызовы SDK Identity Toolkit вызовами FirebaseUI.

iOS

Шаг 1. Добавьте Firebase в свое приложение.

  1. Добавьте Firebase SDK в свое приложение, выполнив следующие команды:

    $ cd your-project directory
    $ pod init
    $ pod 'Firebase'
    
  2. Откройте консоль Firebase и выберите проект Identity Toolkit, который вы уже импортировали.

  3. На странице «Обзор» нажмите « Добавить приложение », а затем нажмите « Добавить Firebase в ваше приложение iOS» . В диалоговом окне «Добавить Firebase» укажите идентификатор пакета вашего приложения и идентификатор магазина приложений, а затем нажмите « Добавить приложение » . Затем на ваш компьютер загружается файл конфигурации GoogleService-Info.plist . Если в вашем проекте есть несколько идентификаторов пакетов, каждый идентификатор пакета должен быть подключен к консоли Firebase, чтобы он мог иметь свой собственный GoogleService-Info.plist .

  4. Скопируйте файл конфигурации в корень вашего проекта Xcode и добавьте его во все цели.

Шаг 2. Удалите SDK Identity Toolkit

  1. Удалите GoogleIdentityToolkit из подфайла вашего приложения.
  2. Запустите команду pod install .

Шаг 3. Добавьте FirebaseUI в свое приложение.

  1. Добавьте аутентификацию FirebaseUI в свое приложение.

  2. В своем приложении замените вызовы SDK Identity Toolkit вызовами FirebaseUI.