Firebase Admin: необходимо ли проверить, соответствует ли uid, декодированный на сервере (на основе токена идентификатора клиента), uid от клиента? - PullRequest
1 голос
/ 02 октября 2019

На моем сервере я обращаюсь к пользовательским данным, передавая Firebase uid в качестве параметра (то есть GET /users/:uid). Я также генерирую токен ID из клиента Firebase и декодирую этот токен на сервере, чтобы получить uid. Затем я проверяю, что эти два uid одинаковы.

Основано ли на том, как Firebase обрабатывает токены, необходимо ли это? Или может Firebase эффективно определить, что параметр uid запроса (сгенерированный с помощью Auth.auth().getUserId и токен (сгенерированный с помощью Auth.auth().generateIdToken()) не был создан одним и тем же пользователем?

Примечание: я не используюбаза данных Firebase, поэтому у меня нет дополнительной защиты от разрешений базы данных.

1 Ответ

1 голос
/ 03 октября 2019

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

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

Поэтому вам нужно всего лишь получить маркер идентификатора пользователя на клиенте и отправить егона сервер, используя HTTPS. Этого достаточно для надежной проверки личности пользователя.

Код сервера (node.js)

// idToken comes from the client app
admin.auth().verifyIdToken(idToken)
  .then(function(decodedToken) {
    let uid = decodedToken.uid;
    // ...
  }).catch(function(error) {
    // Handle error
  });

См. Документы администратора Firebase: Проверка токенов идентификатора

...