Введение в API аутентификации администратора

Firebase Admin SDK позволяет интегрировать ваши серверы с Firebase Authentication . Вы можете использовать Firebase Admin SDK для управления пользователями или токенами аутентификации. Есть несколько причин, по которым это может пригодиться:

Управление пользователями

Не всегда удобно заходить в консоль Firebase для управления пользователями Firebase . API управления пользователями администратора предоставляет программный доступ к этим же пользователям. Он даже позволяет делать то, что консоль Firebase не может, например, получать полные данные пользователя и изменять его пароль, адрес электронной почты или номер телефона.

Пользовательская аутентификация

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

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

Проверка личности

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

Для этого вы можете получить токен ID из клиентского приложения, вошедшего в систему с помощью Firebase Authentication и включить его в запрос к вашему серверу. Затем ваш сервер проверяет токен ID и извлекает утверждения, идентифицирующие пользователя (включая его uid , поставщика удостоверений, с которым он вошел в систему, и т. д.). Эта идентификационная информация может затем использоваться вашим сервером для выполнения действий от имени пользователя.

Firebase Admin SDK предоставляет методы для выполнения задач аутентификации, описанных выше, позволяя вам управлять пользователями, генерировать пользовательские токены и проверять идентификационные токены.

Индивидуальные претензии пользователей

В некоторых случаях может потребоваться реализовать детальный контроль доступа для пользователей, уже вошедших в систему с помощью одного из поддерживаемых поставщиков аутентификации Firebase , таких как Email/Password, Google, Facebook, телефон и т. д. Сочетание настраиваемых пользовательских утверждений и правил безопасности приложений обеспечивает такую возможность. Например, для пользователя, вошедшего в систему с помощью поставщика Firebase Authentication Email and Password, контроль доступа может быть определён с помощью настраиваемых утверждений.

Управление пользователями

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

Управление пользователями

Создание собственного токена

Основное предназначение создания пользовательских токенов — предоставить пользователям возможность аутентификации с помощью внешнего или устаревшего механизма аутентификации. Это может быть как ваш собственный механизм, например, ваш LDAP-сервер, так и сторонний провайдер OAuth, который Firebase изначально не поддерживает, например, Instagram или LinkedIn.

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

Ваш сервер должен создать токен с уникальным идентификатором ( uid ) и передать его клиентскому приложению, которое будет использовать его для входа в Firebase . Примеры кода и более подробную информацию о процессе создания токена см. в разделе Создание токенов.

Создавайте собственные токены

Проверка идентификатора токена

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

В Firebase Admin SDK есть встроенный метод проверки ID-токенов. Вы также можете программно проверять ID-токены на любом языке, используя сторонние библиотеки JWT. Подробнее о процессе проверки ID-токенов и примерах кода см. в разделе «Проверка ID-токенов».

Проверка идентификационных токенов

Индивидуальные претензии пользователей

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

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

Управление доступом с помощью пользовательских заявок