Как использовать firebase в качестве механизма аутентификации Rest API (с использованием клиентских SDK)?

# #firebase #oauth-2.0 #firebase-authentication

Вопрос:

Я просто создаю сервис REST API (и за кулисами использую Firebase DB в качестве своей базы данных). И для аутентификации моего API я подумал, что могу использовать аутентификацию Firebase.

  • Создать /Зарегистрироваться или /Войти —> Возвращает токен
  • Используйте этот токен для аутентификации всех других API

Но я не могу найти, как это сделать с firebase. Большинство решений говорят о пользовательских и IDtokens и требуют «клиентского пакета Firebase SDK». Это означает, что на стороне клиента я напрямую аутентифицируюсь в firebase, чего я не хочу делать. Что я упускаю?

Ответ №1:

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

 const uid = 'some-uid';

admin
  .auth()
  .createCustomToken(uid)
  .then((customToken) => {
    // Send token back to client
  })
  .catch((error) => {
    console.log('Error creating custom token:', error);
  });
 

Источник

Комментарии:

1. Но здесь клиенту придется использовать ClientSDK и проверять customToken на стороне клиента. Моя идея-абстрактная база огня на стороне клиента.

2. это не нужно клиенту. он используется только для проверки дальнейших запросов — если вам нужно декодировать информацию, такую как пользовательские утверждения и другие пользовательские данные, вы можете создать API для ее декодирования на стороне сервера (рискованно) или попробовать декодировать ее на клиенте с помощью декодера JWT jwt.io

3. Но у этого знака короткая жизнь. Это не похоже на аутентификацию, срок действия токена истекает примерно через 1 час. Итак, для каждого сеанса мне придется снова входить в систему на стороне клиента и повторно создавать новый пользовательский токен, верно?

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