как проверить админ firebase на бэкэнде - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь реализовать промежуточное программное обеспечение на экспресс-сервере, который устанавливает пользовательские заголовки uid / admin для входящего запроса.Затем этот модифицированный запрос будет использоваться после промежуточного программного обеспечения, чтобы определить, имеет ли аутентифицированный пользователь / администратор доступ к этому конкретному ресурсу.

Чтобы сделать это для клиента, я просто беру токен в заголовке авторизации и передаю его вметод verifyIdToken API администратора Firebase.Если uid существует, я устанавливаю заголовок.Например:

app.use((req, res, next) => {
  /* get rid of headers sent in by malicious users. */
  delete req.headers._uid;
  try {
    const token = req.headers.authorization.split(' ')[1];
    _dps.fb_admin.auth().verifyIdToken(token).then(claims => {
      if (claims.uid) { req.headers._uid = claims.uid; }
      next();
    }).catch(err => next());
  } catch(err) { next(); }
});

Два вопроса:

1) Как администратор с учетной записью службы на другом сервере, как мне отправить запрос на этот сервер, чтобы этот сервер мог определитьадминистратор отправил запрос?

2) Как мне определить администратора на этом сервере?

Ответы [ 3 ]

0 голосов
/ 06 июня 2018

Используйте setCustomUserClaims() API , чтобы добавить специальное утверждение "admin" ко всем учетным записям администраторов и проверить его при проверке токенов ID.Вы можете найти обсуждение и демонстрацию этого варианта использования здесь (перейти к отметке 6:45 записи).

0 голосов
/ 07 июня 2018

Возможно, решением было бы просто сгенерировать ключ API приличной длины и установить его в качестве переменной среды на каждом из моих серверов.Затем я мог бы отправить это в заголовок авторизации всякий раз, когда я хочу сделать запрос администратора https и проверить его в промежуточном программном обеспечении получателя, выполнив простое сравнение строк.Единственный человек, который мог видеть этот ключ API, это те, кто имеет доступ к моим серверам (администраторы AKA).Дайте мне знать, если что-то не так с этим подходом.Это кажется простым.

0 голосов
/ 06 июня 2018
  1. Вам нужно будет создать свой собственный токен Firebase, чтобы включить в JWT пользовательские поля, такие как isAdmin: true.См. https://firebase.google.com/docs/auth/admin/create-custom-tokens

  2. См. (1)

...