Аутентификация пользователей с помощью облачных функций - PullRequest
0 голосов
/ 20 июня 2020

Я пытаюсь создать RESTful API с использованием firebase и облачных функций, чтобы не зависеть от клиентского API firebase . ADMIN SDK, предоставляемый firebase, значительно расширяет возможности управления пользователями, но я нигде не могу найти способ аутентифицировать пользователей с помощью вызова REST.

Итак, каковы мои возможности? Есть ли способ сделать это с помощью системы аутентификации firebase, или мне пришлось бы создать отдельную систему и аутентифицировать моих пользователей с помощью пользовательских токенов jwt?

Ответы [ 2 ]

0 голосов
/ 20 июня 2020

Если вы развертываете свою функцию в частном режиме (я имею в виду, что только аутентифицированный и авторизованный пользователь может вызывать ее. Для этого вам нужен токен идентификации, подписанный Google. Я не знаю, что можно сделать с Firebase, но в большинстве случаев это невозможно.

Решение состоит в том, чтобы использовать Cloud Endpoint перед вашими облачными функциями. Cloud Endpoint поддерживает аутентификацию Firebase auth, а Cloud Endpoint может размещать совместимый идентификатор OAuth2 (названный сервисный аккаунт на GCP).

Я написал статью о защите бессерверного продукта с помощью ключей API . Вам просто нужно изменить определение безопасности на аутентификацию firebase , и должно работать.

0 голосов
/ 20 июня 2020

Я не на 100% уверен, что понимаю вашу цель, но вот немного пищи для размышлений:

  1. В облачной функции для Firebase вы используете Admin SDK для взаимодействия со службами Firebase (т.е. получение Firestore или создание подписанного URL-адреса файла, хранящегося в Cloud Storage, и т. д. c.). С помощью Admin SDK вы фактически полностью обойдете правила безопасности различных сервисов Firebase.
  2. Если ваша облачная функция для Firebase вызывается непосредственно аутентифицированным пользователем, и вы хотите, в облачной функции, идентифицировать пользователя, который вызывает его, существует два случая: (a) Это вызываемая облачная функция : информация о пользователе автоматически добавляется в запрос, см. do c. (b) Это «простая» Облачная функция HTTP : вы найдете здесь образец, который показывает, как ограничить ее только пользователями Firebase, объявленными в службе Firebase Auth. Затем, когда вы знаете, кто является пользователем, вам придется самостоятельно реализовать контроль доступа, потому что, как сказано выше, с Admin SDK у вас есть полный доступ ко всем службам.
  3. Если ваша цель - аутентифицировать пользователей с помощью вызова REST API (независимо от облачных функций), вы можете использовать Firebase Auth REST API со службой Firebase Auth. В частности, вы можете вызвать следующую конечную точку: https://firebase.google.com/docs/reference/rest/auth#section -sign-in-email-password . Ответ содержит idToken, который можно использовать для вызова облачной функции HTTP, которая реализует ограничение, описанное в пункте 2b выше (просто вызовите конечную точку облачной функции со следующим заголовком HTTP-запроса: 'Authorization': 'Bearer ' + idToken).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...