使用serviceAccountId时无法签署JWT

Yan*_*Yan 8 authentication jwt firebase google-cloud-platform

我们已经从服务帐户密钥切换到serviceAccountIds(或尝试过),因此我们可以清理所有的密码密钥.推出改变后,我们看到:

权限iam.serviceAccounts.signBlob是在服务帐户项目/-serviceAccounts/xxxx@xxx.iam.gserviceaccount.com上执行此操作所必需的.有关如何使用和排除此功能的详细信息,请参阅https://firebase.google.com/docs/auth/admin/create-custom-tokens ....}}

问题是,我们肯定已经应用了正确的角色(见附件).我们甚至尝试了一些更好的措施.

谢谢!

在此输入图像描述

Hir*_*aka 8

在这种情况下,有两个服务帐户:

  1. 用于授权RPC调用的服务帐户(在云功能的情况下,这是App Engine默认服务帐户).
  2. 您指定为的服务帐户serviceAccountId.

似乎IAM仅在两个服务帐户都拥有signBlob权限时才有效.我向GCP/IAM团队询问了这个问题.在此期间,您可以立即尝试以下几种修复方法:

  • 将令牌创建者角色授予项目的App Engine默认服务帐户.
  • 一旦你这样做,你根本不必指定一个serviceAccountId.在函数中运行时,SDK将自动发现相同的服务帐户ID.