firebase - 使用serviceAccountId时无法签署JWT

标签 firebase authentication google-cloud-platform jwt

我们已经从服务帐户 key 切换到serviceAccountIds(或尝试进行了更改),因此我们可以清理所有拥有的胭脂 key 。推出更改后,我们看到:

必须具有权限iam.serviceAccounts.signBlob才能对服务帐户项目/-/serviceAccounts/xxxx@xxx.iam.gserviceaccount.com执行此操作。有关该功能的使用和故障排除的更多详细信息,请引用https://firebase.google.com/docs/auth/admin/create-custom-tokens

关键是,我们肯定已经应用了正确的角色(请参阅附件)。我们甚至还尝试了一些更好的措施。

谢谢!

enter image description here

最佳答案

在这种情况下,使用了两个服务帐户:

  • 用于授权RPC调用的服务帐户(对于Cloud Functions,这是App Engine默认服务帐户)。
  • 您已指定为serviceAccountId的服务帐户。

  • 似乎只有两个服务帐户都具有signBlob权限时,IAM才起作用。我已经向GCP/IAM团队咨询过。同时,您可以立即尝试以下几种修复方法:
  • 将 token 创建者角色授予App Engine默认服务
    您的项目的帐户。
  • 完成此操作后,您无需
    完全指定一个serviceAccountId。 SDK会自动发现相同的内容
    在“功能”中运行时的服务帐户ID。
  • 关于firebase - 使用serviceAccountId时无法签署JWT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53344238/

    相关文章:

    asp.net - 如何获取本地网络内访问ASP.NET内网页面的用户的用户名?

    php - 如何在 php 中调试 mysql_query() 函数

    c# - 使用集成 Windows 身份验证或 NTLM 登录 Jira

    google-app-engine - 如何使用 go 1.11 和 Google App Engine Standard 验证私有(private) Go 模块

    google-cloud-platform - 浏览器在模型训练期间断开连接

    angularjs - 属性 'filter' 在类型 'FirebaseListObservable' 上不存在

    javascript - 未捕获的 FirebaseError : Firebase: No Firebase App '[DEFAULT]' has been created - call Firebase App. 初始化应用程序()(应用程序/无应用程序)

    google-cloud-platform - 谷歌CP : Can Functions that use Serverless VPC Access also enjoy Private Google Access

    json - 类型转换中的 Firebase Swift 3 错误

    firebase - 如何在 flutter firebase 中创建进度条