Введение в 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 .

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

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

Пользовательские претензии

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

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

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

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

Создание пользовательских токенов

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

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

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

Создание пользовательских токенов

проверка идентификационного токена

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

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

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

Пользовательские утверждения

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

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

Контроль доступа с помощью настраиваемых утверждений.