Невозможно подписать JWT при использовании serviceAccountId - PullRequest
0 голосов
/ 16 ноября 2018

Мы переключились с ключей служебной учетной записи на serviceAccountIds (или попытались), чтобы мы могли очистить все имеющиеся у нас ключи румян.После развертывания изменения мы видим:

Разрешение iam.serviceAccounts.signBlob требуется для выполнения этой операции над учетной записью службы projects/-/serviceAccounts/xxxx@xxx.iam.gserviceaccount.com .;Пожалуйста, обратитесь к https://firebase.google.com/docs/auth/admin/create-custom-tokens для получения более подробной информации о том, как использовать и устранять неполадки этой функции ....}}

Дело в том, что мы определенно применили правильную роль (см. Приложение).Мы даже попробовали еще несколько для хорошей меры.

Спасибо!

enter image description here

1 Ответ

0 голосов
/ 22 ноября 2018

В этом случае используются две служебные учетные записи:

  1. Учетная запись службы, используемая для авторизации вызовов RPC (в случае облачных функций это учетная запись службы App Engine по умолчанию).
  2. Учетная запись, которую вы указали как serviceAccountId.

Кажется, IAM работает только тогда, когда ОБА учетные записи службы имеют разрешение signBlob. Я спросил об этом команду GCP / IAM. А пока вот несколько исправлений, которые вы можете попробовать немедленно:

  • Предоставление роли создателя токена службе по умолчанию App Engine. аккаунт вашего проекта.
  • Как только вы это сделаете, вам не нужно укажите serviceAccountId вообще. SDK автоматически обнаружит то же самое идентификатор учетной записи службы при запуске в функциях.
...