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

Я работал над проектом, который требовал создания REST API с использованием Express и Firebase, я знаком с созданием REST API с использованием Nodejs/Express, но никогда не делал этого с firebase. После написания конечной точки, которая создает пользователя, мне было трудно создать конечные точки, которые проверяют, доступен ли пользователь в базе данных реального времени firebase и проверяет пароль, это может быть легко для некоторых людей, но работа с firebase с этой точки зрения для первого время. Я провел много исследований, но ничего не нашел. Когда я смог понять, как это сделать, я решил написать статью, которая может помочь любому, кто хочет интегрировать это в свой проект.

Обратите внимание, что эта статья не предназначена для того, чтобы научить вас создавать/запускать экспресс-сервер. Если вы не знакомы с использованием Node.js или Express, я советую вам проверить это, прежде чем читать эту статью. Также я считаю, что вы уже закончили настройку своего проекта firebase, поэтому я не буду вдаваться в подробности.

Зайдите в консоль firebase, создайте новый проект и включите (адрес электронной почты и пароль) в поставщике аутентификации, если вы еще этого не сделали.

Проверка доступности пользователей и проверка паролей с помощью базы данных Firebase Realtime.

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

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

В приведенном ниже фрагменте кода показано, как можно аутентифицировать пользователя с помощью Firebase REST API в приложении Express.

В приведенном выше коде используется библиотека axios для отправки запроса POST в конечную точку Firebase REST API для входа с использованием электронной почты и пароля. process.env.API_KEY ссылается на переменную среды, которая должна быть установлена ​​на ваш ключ Firebase API, который вы скопировали из своего профиля firebase. Запрос включает адрес электронной почты пользователя, пароль и флаг returnSecureToken, установленный на true.

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

URL-адрес для выполнения POST-запроса https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key={Введите здесь свой ключ API}

Если ваша Firebase настроена правильно, приведенный выше код должен работать для входа пользователя после регистрации. После завершения входа пользователя возвращаемый idToken будет использоваться для авторизации и защиты конечной точки, которой требуется авторизация.

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

В приведенном выше фрагменте кода мы определяем функцию промежуточного программного обеспечения с именем isLoggedIn. Это промежуточное ПО ожидает, что клиент включит в запрос заголовок Authorization, содержащий действительный токен Firebase ID, возвращенный после успешного входа пользователя в систему.

При получении запроса промежуточное ПО проверяет наличие заголовка Authorization. Если нет, он возвращает ответ 401 Unauthorized, указывающий, что пользователь не аутентифицирован.

Если присутствует заголовок Authorization, промежуточное ПО использует метод verifyIdToken Firebase Admin SDK для проверки подлинности и действительности токена. Если токен действителен, информация о декодированном токене прикрепляется к свойству req.user, позволяя последующим обработчикам маршрутов получать доступ к информации аутентифицированного пользователя.

Если проверка токена завершается неудачей, в журнал заносится ошибка и возвращается ответ 401 Unauthorized. Чтобы использовать это промежуточное ПО, вы можете включить его в маршруты или контроллеры, требующие аутентификации. Например:

В этом примере маршрут /private защищен и требует аутентификации. Промежуточное ПО isLoggedIn добавляется в качестве второго аргумента, гарантируя, что только аутентифицированные запросы могут получить доступ к этому маршруту.

ЗАКЛЮЧЕНИЕ:

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

Удачного кодирования!!!