Выпущена новая версия Google Identity Toolkit под названием Firebase Authentication . В дальнейшем разработка новых функций Identity Toolkit будет приостановлена, и вся новая разработка будет осуществляться на основе Firebase Authentication. Мы рекомендуем разработчикам Identity Toolkit перейти на Firebase Authentication, как только это станет практически осуществимо для их приложений; однако Identity Toolkit продолжает работать и не будет устаревать без дополнительного объявления.
Новые функции
Firebase Authentication уже обладает рядом существенных улучшений по сравнению с Google Identity Toolkit:
Доступ ко всем функциям Firebase.
Firebase — это мобильная платформа, которая помогает быстро разрабатывать высококачественные приложения, расширять пользовательскую базу и зарабатывать больше денег. Firebase состоит из взаимодополняющих функций, которые можно комбинировать в соответствии с вашими потребностями, и включает в себя инфраструктуру для: мобильной аналитики , облачного обмена сообщениями , базы данных в реальном времени , файлового хранилища , статического хостинга , удаленной конфигурации , отчетов о сбоях мобильных приложений и тестирования Android.
Обновлены пользовательские интерфейсы.
Мы полностью переработали пользовательский интерфейс на основе последних исследований Google в области UX. Это включает в себя восстановление паролей, привязку учетных записей, а также процессы уточнения данных для новых и существующих учетных записей, которые часто требуют значительного времени на кодирование и отладку. Интегрирована функция Smart Lock for Passwords на Android, которая значительно улучшила конверсию при входе и регистрации в участвующих приложениях . Также поддерживается простая модификация тем оформления в соответствии с вашим приложением, а для максимальной персонализации версии для Android и iOS выпущены с открытым исходным кодом.
Упрощенная настройка сервера
Мы упростили разработчикам использование Firebase Authentication. В Identity Toolkit мы обнаружили, что многие разработчики не реализовывали функцию восстановления по электронной почте, что делало невозможным восстановление учетных записей пользователей в случае, если они забыли пароль. Firebase Authentication может отправлять пользователю сообщения с подтверждением, сбросом и изменением пароля по электронной почте, причем текст легко настраивается под пользователя. Кроме того, вам больше не нужно размещать виджеты пользовательского интерфейса для перенаправлений и выполнения операций смены пароля.
Новая административная консоль
В Firebase появилась новая консоль разработчика , и раздел «Аутентификация» позволяет просматривать, изменять и удалять пользователей. Это может значительно помочь в отладке процессов входа и регистрации. Консоль также позволяет настраивать методы аутентификации и персонализировать шаблоны электронных писем.
Новые SDK
Теперь все серверные API Identity Toolkit доступны в нативном виде в каждой из наших клиентских библиотек (Android, iOS, web). Разработчики смогут входить в систему и регистрировать старых и новых пользователей, получать доступ к свойствам пользователей, связывать, обновлять и удалять учетные записи, сбрасывать пароли и многое другое, не будучи привязанными к фиксированному пользовательскому интерфейсу. При желании вы можете вручную создать собственный процесс входа в систему и пользовательский интерфейс на основе этого API.
Управление сессиями для мобильных приложений
С помощью Identity Toolkit приложения создавали собственное состояние сессии на основе первоначального события аутентификации из Identity Toolkit. Firebase Auth использует бэкэнд-сервис, который принимает токен обновления, полученный в результате события аутентификации, и обменивает его на токены доступа на час для Android, iOS и JavaScript. Когда пользователь меняет свой пароль, токены обновления больше не смогут генерировать новые токены доступа, тем самым блокируя доступ до тех пор, пока пользователь не пройдет повторную аутентификацию на этом устройстве.
Анонимная аутентификация и аутентификация GitHub
Firebase Authentication поддерживает два новых типа аутентификации: GitHub и анонимную. Анонимный вход позволяет создать уникальный идентификатор пользователя без необходимости прохождения пользователем процесса авторизации или регистрации. С анонимным пользователем теперь можно выполнять аутентифицированные вызовы API, как и с обычным пользователем. Когда пользователь регистрирует учетную запись, вся активность сохраняется с тем же идентификатором пользователя. Это отлично подходит для таких ситуаций, как серверная корзина покупок или любое приложение, где необходимо взаимодействовать с пользователем перед тем, как отправить его на страницу регистрации.
Различия в характеристиках
Некоторые функции Identity Toolkit в настоящее время недоступны в Firebase Authentication, в то время как другие функции были переработаны и работают по-другому. Вы можете решить не переходить сразу, если эти функции важны для вашего приложения. Во многих случаях эти функции могут быть не важны для вашего приложения, или могут существовать простые резервные варианты, которые позволят вам продолжить миграцию.
Различия на стороне сервера
Основной сервис Identity Toolkit с его базовыми REST API, логикой проверки учетных записей и основной базой данных пользователей претерпел лишь незначительные обновления. Однако некоторые функции и способ интеграции Firebase Authentication в ваш сервис изменились.
Поставщики идентификационных данных
PayPal и AOL не поддерживаются. Пользователи с учетными записями этих поставщиков идентификации по-прежнему могут войти в ваше приложение, используя процедуру восстановления пароля, и установить пароль для своей учетной записи.
Серверные библиотеки
В настоящее время доступны 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 Auth
Все сценарии пользовательского интерфейса, управляющие входом в систему, регистрацией, восстановлением пароля и привязкой учетных записей, были перестроены с использованием SDK аутентификации Frebase. Они доступны в виде SDK с открытым исходным кодом для iOS и Android, что позволяет полностью настраивать сценарии способами, недоступными при использовании Identity Toolkit.
К дополнительным отличиям относятся:
Сессии и миграция
Поскольку управление сессиями в Identity Toolkit и Firebase Authentication осуществляется по-разному, существующие сессии ваших пользователей будут завершены при обновлении SDK, и им придётся войти в систему заново.
Прежде чем начать
Прежде чем перейти с Identity Toolkit на Firebase Authentication, необходимо выполнить следующие действия:
Откройте консоль Firebase , нажмите «Импорт проекта Google» и выберите свой проект Identity Toolkit.
Чтобы открыть страницу IAM и администрирования, нажмите settings > «Разрешения» .
Откройте страницу « Учетные записи служб» . Здесь вы увидите учетную запись службы, которую вы ранее настроили для Identity Toolkit.
Рядом с учетной записью службы нажмите more_vert > Создать ключ . Затем в диалоговом окне «Создать закрытый ключ» установите тип ключа на JSON и нажмите «Создать» . Для вас будет загружен JSON-файл, содержащий учетные данные вашей учетной записи службы. Он понадобится вам для инициализации SDK на следующем шаге.
Вернитесь в консоль Firebase . В разделе «Аутентификация» откройте страницу «Шаблоны электронных писем» . На этой странице настройте шаблоны электронных писем вашего приложения.
В Identity Toolkit при сбросе пользователями паролей, изменении адресов электронной почты и подтверждении адресов электронной почты необходимо было получить стандартный код от сервера Identity Toolkit, а затем отправить этот код пользователям по электронной почте. Firebase отправляет электронные письма на основе настроенных вами шаблонов без каких-либо дополнительных действий.
Необязательно : если вам необходимо получить доступ к сервисам Firebase на вашем сервере, установите Firebase SDK.
Вы можете установить модуль Firebase Node.js с помощью
npm:$ npm init $ npm install --save firebase-adminВ вашем коде вы можете получить доступ к 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 UI начинается со списка способов входа, включая вариант с использованием электронной почты, который перенаправляет наaccountchooser.comдля веб-версии и использует API hintRequest на Android. Кроме того, адреса электронной почты больше не требуются в Firebase UI. Это упростит поддержку анонимных пользователей, пользователей с пользовательской аутентификацией или пользователей от провайдеров, для которых адреса электронной почты не требуются.Виджет управления учетной записью
Этот виджет предоставляет пользователям пользовательский интерфейс для изменения адресов электронной почты, смены паролей или отвязки своих учетных записей от поставщиков идентификационных данных. В настоящее время он находится в разработке.
Кнопка/виджет входа
Виджеты, такие как кнопка входа и карточка пользователя, больше не предоставляются. Их можно очень легко создать с помощью API аутентификации Firebase.
No signOutUrl
Вам потребуется вызвать
firebase.auth.signOut()и обработать вызов функции обратного вызова.No oobActionUrl
Отправка электронных писем теперь осуществляется через Firebase и настраивается в консоли Firebase.
Настройка CSS
FirebaseUI использует стили Material Design Lite , которые динамически добавляют анимации в стиле Material Design.
Шаг 1: Изменение кода сервера
Если ваш сервер использует токен Identity Toolkit (действительный в течение двух недель) для управления сессиями веб-пользователей, вам необходимо перевести сервер на использование собственного сессионного cookie.
- Реализуйте конечную точку для проверки токена Firebase ID и установки сессионного cookie для пользователя. Клиентское приложение отправляет токен Firebase ID на эту конечную точку.
- Если входящий запрос содержит ваш собственный сессионный cookie, вы можете считать пользователя аутентифицированным. В противном случае, обрабатывайте запрос как неаутентифицированный.
- Если вы не хотите, чтобы ваши пользователи потеряли свои существующие авторизованные сессии, вам следует подождать две недели, пока не истечет срок действия всех токенов Identity Toolkit, или же выполнить двойную проверку токенов для вашего веб-приложения, как описано ниже в шаге 3.
Далее, поскольку токены Firebase отличаются от токенов Identity Toolkit, вам необходимо обновить логику проверки токенов. Установите Firebase Server SDK на свой сервер; или, если вы используете язык, не поддерживаемый Firebase Server SDK, загрузите библиотеку проверки JWT-токенов для вашей среды и правильно проверьте токен .
После внесения вышеуказанных изменений у вас могут остаться фрагменты кода, использующие токены Identity Toolkit. Если у вас приложения для iOS или Android, пользователям потребуется обновить приложение до новой версии, чтобы новые фрагменты кода заработали. Если вы не хотите заставлять пользователей обновлять приложение, вы можете добавить дополнительную логику проверки на сервере, которая будет анализировать токен и определять, нужно ли использовать SDK Firebase или SDK Identity Toolkit для его проверки. Если у вас только веб-приложение, все новые запросы на аутентификацию будут перенесены в Firebase, и, следовательно, вам нужно будет использовать только методы проверки токенов Firebase.
См. справочник по Firebase Web API .
Шаг 2: Обновите свой HTML-код.
Добавьте код инициализации Firebase в ваше приложение:
- Откройте свой проект в консоли Firebase .
- На странице «Обзор» нажмите «Добавить приложение» , затем нажмите «Добавить Firebase в ваше веб-приложение» . Отобразится фрагмент кода, инициализирующий Firebase.
- Скопируйте и вставьте фрагмент кода инициализации на свою веб-страницу.
Добавьте FirebaseUI Auth в ваше приложение:
<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>Удалите SDK Identity Toolkit из своего приложения.
Если для управления сессиями вы использовали токен Identity Toolkit ID, необходимо внести следующие изменения на стороне клиента:
После успешного входа в систему через Firebase получите токен Firebase ID, вызвав метод
firebase.auth().currentUser.getToken().Отправьте токен Firebase ID на бэкэнд-сервер, проверьте его и выдайте собственный сессионный cookie.
Не полагайтесь исключительно на сессионный cookie при выполнении конфиденциальных операций или отправке авторизованных запросов на редактирование на ваш сервер. Вам потребуется обеспечить дополнительную защиту от межсайтовой подделки запросов (CSRF).
Если ваша платформа не обеспечивает защиту от CSRF-атак, одним из способов предотвращения атаки может быть получение токена Firebase ID для авторизованного пользователя с помощью
getToken()и включение этого токена в каждый запрос (по умолчанию также будет отправляться cookie-файл сессии). Затем вы будете проверять этот токен с помощью SDK сервера Firebase в дополнение к проверке cookie-файла сессии, которую выполняет ваша серверная платформа. Это затруднит успешные CSRF-атаки, поскольку токен Firebase ID хранится только в веб-хранилище и никогда не сохраняется в cookie-файлах.Токены Identity Toolkit действительны в течение двух недель. Вы можете продолжать выпускать токены со сроком действия две недели или же увеличить или уменьшить этот срок в зависимости от требований безопасности вашего приложения. При выходе пользователя из системы удаляйте cookie сессии.
Шаг 3: Обновите URL-адреса перенаправления IDP.
В консоли Firebase откройте раздел «Аутентификация» и перейдите на вкладку «Метод входа» .
Для каждого поддерживаемого вами поставщика федеративной авторизации выполните следующие действия:
- Щелкните по названию поставщика услуг авторизации.
- Скопируйте URI перенаправления OAuth.
- В консоли разработчика поставщика услуг авторизации обновите URI перенаправления OAuth.
Android
Шаг 1: Добавьте Firebase в ваше приложение.
Откройте консоль Firebase и выберите свой проект Identity Toolkit, который вы уже импортировали.
На странице «Обзор» нажмите «Добавить приложение» , а затем « Добавить Firebase в ваше Android-приложение» . В диалоговом окне «Добавить Firebase» укажите имя пакета вашего приложения и отпечаток сертификата подписи, после чего нажмите «Добавить приложение» . После этого на ваш компьютер будет загружен файл конфигурации
google-services.json.Скопируйте файл конфигурации в корневой каталог модуля вашего Android-приложения. Этот файл конфигурации содержит информацию о проекте и клиенте Google OAuth.
В файле
build.gradleвашего проекта (<var>your-project</var>/build.gradle) укажите имя пакета вашего приложения в разделеdefaultConfig:defaultConfig { ….. applicationId "com.your-app" }Также в файле
build.gradleна уровне проекта добавьте зависимость для включения плагина google-services:buildscript { dependencies { // Add this line classpath 'com.google.gms:google-services:3.0.0' } }В файл
build.gradleвашего приложения (<var>my-project</var>/<var>app-module</var>/build.gradle) добавьте в конец следующую строку, чтобы включить плагин google-services:// Add to the bottom of the file apply plugin: 'com.google.gms.google-services'Плагин google-services использует файл
google-services.jsonдля настройки вашего приложения на использование Firebase.Также в файл
build.gradleна уровне приложения добавьте зависимость Firebase Authentication:compile 'com.google.firebase:firebase-auth:24.0.1' compile 'com.google.android.gms:play-services-auth:21.5.0'
Шаг 2: Удалите SDK Identity Toolkit.
- Удалите конфигурацию Identity Toolkit из файла
AndroidManifest.xml. Эта информация содержится в файлеgoogle-service.jsonи загружается плагином google-services. - Удалите SDK Identity Toolkit из своего приложения.
Шаг 3: Добавьте FirebaseUI в ваше приложение.
Добавьте FirebaseUI Auth в ваше приложение.
В вашем приложении замените вызовы SDK Identity Toolkit вызовами FirebaseUI.
iOS
Шаг 1: Добавьте Firebase в ваше приложение.
Добавьте SDK Firebase в свое приложение, выполнив следующие команды:
$ cd your-project directory $ pod init $ pod 'Firebase'Откройте консоль Firebase и выберите свой проект Identity Toolkit, который вы уже импортировали.
На странице «Обзор» нажмите «Добавить приложение» , а затем « Добавить Firebase в ваше iOS-приложение» . В диалоговом окне «Добавить Firebase» укажите идентификатор пакета вашего приложения и идентификатор App Store, а затем нажмите «Добавить приложение» . После этого на ваш компьютер будет загружен файл конфигурации
GoogleService-Info.plist. Если в вашем проекте несколько идентификаторов пакетов, каждый идентификатор пакета должен быть подключен в консоли Firebase, чтобы у него был свой собственный файлGoogleService-Info.plist.Скопируйте файл конфигурации в корневую папку вашего проекта Xcode и добавьте его ко всем целям.
Шаг 2: Удалите SDK Identity Toolkit.
- Удалите
GoogleIdentityToolkitиз Podfile вашего приложения. - Выполните команду
pod install.
Шаг 3: Добавьте FirebaseUI в ваше приложение.
Добавьте FirebaseUI Auth в ваше приложение.
В вашем приложении замените вызовы SDK Identity Toolkit вызовами FirebaseUI.