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

30 июня 2020 г. указанные на этой странице SDK и страница настроек API перестанут работать. ( https://identitytoolkit.googleapis.com/... и https://securetoken.googleapis.com/... , используемые Identity Platform и Firebase Authentication, будут продолжать работать.)

Чтобы перенести существующий проект из Identity Toolkit, см. Руководство по миграции Identity Platform или руководство по миграции Firebase Authentication .

Переход с Google Identity Toolkit на Google Cloud Identity Platform

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

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

Identity Platform уже имеет значительные улучшения функций по сравнению с Google Identity Toolkit:

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

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

  • Новые методы аутентификации

    Identity Platform поддерживает корпоративные стандарты федерации, такие как SAML и OIDC, что позволяет масштабировать приложения и службы SaaS. Identity Platform также предлагает поддержку таких поставщиков, как GitHub, Microsoft, Yahoo и других. Вы можете использовать анонимный вход для создания уникального идентификатора пользователя, не требуя от пользователя прохождения какого-либо процесса входа или регистрации; это позволяет вам выполнять аутентифицированные вызовы API, как если бы вы это делали с обычным пользователем. Когда пользователь решает зарегистрировать учетную запись, все действия сохраняются с тем же идентификатором пользователя. Это полезно для таких сценариев, как корзины покупок на стороне сервера или другие приложения, где вы хотите привлечь пользователя, прежде чем отправить его через процесс регистрации.

  • Уверенное масштабирование с помощью соглашений об уровне обслуживания и облачной поддержки

    Identity Platform построена на надежной инфраструктуре Google и предоставляет соглашения об уровне обслуживания и поддержку из Google Cloud. Это означает, что вы можете с уверенностью масштабировать свой сервис и полагаться на то, что Google обеспечит необходимую вам устойчивость, доступность и масштабируемость.

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

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

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

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

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

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

  • Новые SDK

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Клиентские и серверные SDK

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

  • Виджет пользовательского интерфейса

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

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

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

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

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

Перед переходом с Identity Toolkit на Identity Platform необходимо:

  1. Откройте облачную консоль и выберите свой проект Identity Toolkit.

  2. В Marketplace перейдите к Identity Platform и выберите «Включить Identity Platform».

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

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

  5. Вернитесь в облачную консоль . В разделе «Поставщики» в методе входа «Электронная почта/пароль» откройте страницу « Шаблоны электронной почты ». Затем вы можете настроить шаблоны вашего приложения.

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

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

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

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

Серверы и JavaScript

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Нет oobActionUrl

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

  • Настройка CSS

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

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

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

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

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

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

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

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

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

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

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

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

  1. В Cloud Console откройте раздел Providers .

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

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

Андроид

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

  1. Откройте Cloud Console и выберите свой проект Identity Toolkit.

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

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

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

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

    compile 'com.google.firebase:firebase-auth:21.0.8'
    compile 'com.google.android.gms:play-services-auth:20.3.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. Добавьте клиентский SDK в свое приложение, выполнив следующие команды:

    $ cd your-project directory
    $ pod init
    $ pod 'Firebase'
    
  2. Откройте Cloud Console и выберите свой проект Identity Toolkit.

  3. На странице «Поставщики» нажмите « Сведения о настройке приложения » , выберите вкладку « iOS » и нажмите «Начать работу в Firebase ». В диалоговом окне «Добавить Firebase» укажите имя пакета вашего приложения и отпечаток сертификата подписи и нажмите « Добавить приложение ». Затем на ваш компьютер загружается файл конфигурации google-services.json . В диалоговом окне «Добавить 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.