Новейшая версия Google Identity Toolkit была выпущена как Firebase Authentication . В дальнейшем работа над функциями Identity Toolkit будет заморожена, и вся разработка новых функций будет осуществляться в Firebase Authentication. Мы призываем разработчиков Identity Toolkit перейти на Firebase Authentication как можно скорее, как только это будет целесообразно для их приложений; однако Identity Toolkit продолжает работать и не будет устарел без дальнейшего объявления.
Новые возможности
Firebase Authentication уже имеет ряд существенных улучшений функций по сравнению с Google Identity Toolkit:
Доступ ко всем данным Firebase
Firebase — это мобильная платформа, которая помогает вам быстро разрабатывать высококачественные приложения, расширять свою пользовательскую базу и зарабатывать больше денег. Firebase состоит из дополнительных функций, которые вы можете комбинировать и подбирать в соответствии со своими потребностями, и включает инфраструктуру для: мобильной аналитики , облачных сообщений , базы данных в реальном времени , хранилища файлов , статического хостинга , удаленной настройки , отчетов о сбоях мобильных приложений и тестирования Android.
Обновленные пользовательские интерфейсы
Мы полностью перестроили потоки пользовательского интерфейса на основе последних исследований UX от Google. Это включает в себя восстановление пароля, привязку учетных записей, новые/существующие потоки устранения неоднозначности учетных записей, которые часто требуют значительного времени для кодирования и отладки. Он интегрирует Smart Lock для паролей на Android, что значительно улучшило конверсию входа и регистрации для участвующих приложений . Он также поддерживает простые изменения тем для соответствия вашему приложению, а для максимальной настраиваемости версии Android и iOS были открыты исходным кодом.
Упрощенная настройка сервера
Мы упростили разработчикам использование Firebase Authentication. С помощью 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 с ее базовыми REST API, логикой проверки учетных записей и основной базой данных пользователей претерпела лишь незначительные обновления. Но некоторые функции и способ интеграции 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 аутентификация
Все потоки пользовательского интерфейса, которые управляют входом, регистрацией, восстановлением пароля и связыванием учетных записей, были перестроены с использованием Frebase Authentication SDK. Они доступны как SDK с открытым исходным кодом для iOS и Android, чтобы вы могли полностью настраивать потоки способами, которые невозможны с Identity Toolkit.
Дополнительные отличия включают в себя:
Сеансы и миграция
Поскольку сеансы управляются по-разному в Identity Toolkit и Firebase Authentication, существующие сеансы ваших пользователей будут завершены после обновления SDK, и вашим пользователям придется снова входить в систему.
Прежде чем начать
Прежде чем перейти с Identity Toolkit на Firebase Authentication, вам необходимо
Откройте консоль Firebase , нажмите «Импортировать проект Google» и выберите проект Identity Toolkit.
Нажмите settings > «Разрешения» , чтобы открыть страницу «IAM и администрирование».
Откройте страницу учетных записей служб . Здесь вы можете увидеть учетную запись службы, которую вы ранее настроили для Identity Toolkit.
Рядом с учетной записью службы нажмите more_vert > Create key . Затем в диалоговом окне Create private key установите Key type на JSON и нажмите Create . Для вас будет загружен файл JSON, содержащий учетные данные вашей учетной записи службы. Он понадобится вам для инициализации SDK на следующем шаге.
Вернитесь в консоль Firebase . В разделе Auth откройте страницу Email Templates . На этой странице настройте шаблоны электронной почты вашего приложения.
В Identity Toolkit, когда пользователи сбрасывали пароли, меняли адреса электронной почты и подтверждали свои адреса электронной почты, вам нужно было получить OOB-код с сервера 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 , Web .
Серверы и JavaScript
Заметные изменения
Существует ряд дополнительных отличий веб-реализации Firebase от Identity Toolkit.
Управление веб-сессией
Ранее, когда пользователь проходил аутентификацию с помощью виджета Identity Toolkit , для пользователя устанавливался файл cookie, который использовался для начальной загрузки сеанса . Этот файл cookie имел двухнедельный срок действия и использовался, чтобы разрешить пользователю использовать виджет управления учетной записью для изменения пароля и адреса электронной почты. Некоторые сайты использовали этот файл cookie для аутентификации всех других запросов страниц на сайте. Другие сайты использовали файл cookie для создания собственных файлов cookie с помощью системы управления файлами cookie своего фреймворка.
Firebase client SDKs теперь управляют токенами 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.
Нет выходаUrl
Вам нужно будет вызвать
firebase.auth.signOut()
и обработать обратный вызов.Нет 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, пользователям необходимо будет обновиться до новой версии приложения, чтобы новые пути кода работали. Если вы не хотите заставлять пользователей обновлять приложение, вы можете добавить дополнительную логику проверки сервера, которая проверяет токен и определяет, нужно ли использовать Firebase SDK или Identity Toolkit SDK для проверки токена. Если у вас есть только веб-приложение, все новые запросы на аутентификацию будут перенесены в 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>
Удалите Identity Toolkit SDK из вашего приложения.
Если вы использовали токен идентификатора Identity Toolkit для управления сеансом, вам необходимо внести следующие изменения на стороне клиента:
После успешного входа в Firebase получите токен Firebase ID, вызвав
firebase.auth().currentUser.getToken()
.Отправьте токен Firebase ID на внутренний сервер, проверьте его и создайте собственный сеансовый cookie-файл.
Не полагайтесь исключительно на сеансовый cookie при выполнении конфиденциальных операций или отправке аутентифицированных запросов на редактирование на ваш сервер. Вам нужно будет обеспечить дополнительную защиту от подделки межсайтовых запросов (CSRF).
Если ваш фреймворк не обеспечивает защиту от CSRF, одним из способов предотвращения атаки будет получение токена Firebase ID для вошедшего в систему пользователя с помощью
getToken()
и включение токена в каждый запрос (куки-файл сеанса также будет отправлен по умолчанию). Затем вы должны проверить этот токен с помощью SDK сервера Firebase в дополнение к проверке куки-файла сеанса, которую выполнил ваш бэкэнд-фреймворк. Это затруднит успешные атаки CSRF, поскольку токен Firebase ID хранится только с помощью веб-хранилища и никогда в куки-файле.Токены Identity Toolkit действительны в течение двух недель. Вы можете продолжить выпуск токенов, которые действуют две недели, или вы можете сделать его длиннее или короче в зависимости от требований безопасности вашего приложения. Когда пользователь выходит из системы, очистите сеансовый cookie.
Шаг 3: Обновите URL-адреса перенаправления IDP
В консоли Firebase откройте раздел «Аутентификация» и перейдите на вкладку «Метод входа» .
Для каждого поддерживаемого вами поставщика федеративного входа выполните следующие действия:
- Нажмите на имя поставщика услуг входа.
- Скопируйте URI перенаправления OAuth.
- В консоли разработчика поставщика входа обновите URI перенаправления OAuth.
андроид
Шаг 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.4.0'
Шаг 2: Удалите Identity Toolkit SDK
- Удалите конфигурацию Identity Toolkit из файла
AndroidManifest.xml
. Эта информация включена в файлgoogle-service.json
и загружается плагином google-services. - Удалите Identity Toolkit SDK из вашего приложения.
Шаг 3: Добавьте FirebaseUI в свое приложение
Добавьте FirebaseUI Auth в свое приложение.
В своем приложении замените вызовы Identity Toolkit SDK на вызовы FirebaseUI.
iOS
Шаг 1: Добавьте Firebase в свое приложение
Добавьте Firebase SDK в свое приложение, выполнив следующие команды:
$ 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: Удалите Identity Toolkit SDK
- Удалите
GoogleIdentityToolkit
из Podfile вашего приложения. - Запустите команду
pod install
.
Шаг 3: Добавьте FirebaseUI в свое приложение
Добавьте FirebaseUI Auth в свое приложение.
В своем приложении замените вызовы Identity Toolkit SDK на вызовы FirebaseUI.