尝试使用 Firebase Admin SDK 创建自定义令牌时出现“调用者没有权限”

2024-01-12

Error

打电话时admin.auth().createCustomToken()我收到以下错误:

Error: The caller does not have permission; Please refer to https://firebase.google.com/docs/auth/admin/create-custom-tokens for more details on how to use and troubleshoot this feature.

提供的文档让我相信我用来初始化 Firebase Admin SDK 的服务帐户没有足够的权限。我不相信是这样的,所以我想问问,看看我是否错过了什么。

配置

Firebase Admin SDK 在后端初始化,如下所示:

admin.initializeApp({
  serviceAccountId: 'fir[email protected] /cdn-cgi/l/email-protection'
});

从技术上讲,该值是从环境变量引用的,但我已确认该值是正确的。

所使用的服务帐户具有以下角色:

roles/firebase.sdkAdminServiceAgent
roles/iam.serviceAccountTokenCreator

根据文档,创建自定义令牌所需的权限是iam.serviceAccounts.signBlob。此许可是iam.serviceAccountTokenCreator根据此输出的角色:

❯ gcloud beta iam roles describe roles/iam.serviceAccountTokenCreator
description: Impersonate service accounts (create OAuth2 access tokens, sign blobs
  or JWTs, etc).
etag: AA==
includedPermissions:
- iam.serviceAccounts.get
- iam.serviceAccounts.getAccessToken
- iam.serviceAccounts.getOpenIdToken
- iam.serviceAccounts.implicitDelegation
- iam.serviceAccounts.list
- iam.serviceAccounts.signBlob
- iam.serviceAccounts.signJwt
- resourcemanager.projects.get
- resourcemanager.projects.list
name: roles/iam.serviceAccountTokenCreator
stage: GA
title: Service Account Token Creator

最后,出现错误的问题代码如下:

try {
  const loginToken = await admin.auth().createCustomToken(uid);
  return response(200).json({ loginToken });
} catch (err) {
  ...
}

uid 来自通过 GoogleUser 凭据登录用户 - 所提供的 uid 被确认是准确的,并且当引用同一服务帐户的 JSON 密钥文件时,此流程在本地工作。

服务器在 GKE 上运行,以防可能是集群权限错误。

任何帮助将不胜感激!

编辑-已解决Hiranya 的回答成功了 - K8s 部署已配置了一个服务帐户,其最初目的只是为了启用 Cloud SQL 代理。为该服务帐户授予 serviceAccountTokenCreator 角色解决了该问题。


您需要确保 SDK 授权的服务帐户(而不是指定的帐户)serviceAccountId) 具有代币创建者角色。这是 Google 应用程序默认凭据自动发现的服务帐户。对于 Cloud Functions,这是名为的服务帐户{project-name}@appspot.gserviceaccount.com。您需要找出 GKE 的等效服务帐户并授予其令牌创建者角色。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试使用 Firebase Admin SDK 创建自定义令牌时出现“调用者没有权限” 的相关文章

  • 调整添加的绘制组件的大小和奇怪的摆动行为

    这个问题困扰了我好几天 我正在制作一个特殊的绘画程序 我制作了一个 JPanel 并添加了使用 Paint 方法绘制的自定义 jComponent 问题是 每当我调整窗口大小时 所有添加的组件都会 消失 或者只是不绘制 因此我最终会得到一个
  • 在 RESTful Web 服务中实现注销

    我正在开发一个需要注销服务的移动应用程序 登录服务是通过数据库验证来完成的 现在我陷入了注销状态 退一步 您没有提供有关如何在应用程序中执行身份验证的详细信息 并且很难猜测您在做什么 但是 需要注意的是 在 REST 应用程序中 不能有会话
  • 仅当显式选择行时才关闭 ui-bootstrap typeahead

    我创建了这个jsBin http jsbin com livuqafe 2 edit来证明我遇到的问题 如果您转到此处 请尝试输入 五 并继续 你的自然反应是输入 五 然后按 Tab 如果你想要 五百 你可以向下箭头一次 但是 在这种情况下
  • 如何通过索引访问 JSON 对象中的字段

    我知道这不是最好的方法 但我别无选择 我必须通过索引访问 JSONObject 中的项目 访问对象的标准方法是只写this objectName or this objectName 我还找到了一种获取 json 对象内所有字段的方法 fo
  • 带有 Maven Wrapper 的 Java 17 导致无法识别的 VM 选项“MaxPermSize=512m”

    I use OpenJDK 17 https jdk java net 17 使用 Maven Wrapper 3 8 2 从春季初始化 https start spring io Maven项目 JAR打包 Java 17 Spring
  • 测量窗口偏移

    有没有一种方法可以测量 jQuery 中窗口的偏移量 以便我可以比较 固定 元素和相对定位元素的位置 我需要能够知道窗口滚动了多远 以便我可以使用该图来计算固定元素的高度 相对于视口顶部 和相对对象的高度 相对于顶部 之间的差异文件的内容
  • MySQL 查询计算上个月

    我想计算上个月的订单总额 我收到了从当前日期获取当月数据的查询 SELECT SUM goods total AS Total Amount FROM orders WHERE order placed date gt date sub c
  • 没有输入的 jQuery 日期选择器

    我有一个相当复杂的网络应用程序 我想向其中添加一些日期选择 UI 我遇到的问题是我无法从文档中弄清楚如何真正控制日期选择器的出现方式和时间 不涉及任何表单元素 不 我不会添加秘密表单字段 因此简单的开箱即用方法根本行不通 我希望有人可以提供
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data
  • 将第三个表链接到多对多关联中的桥接表

    设计这个数据库的正确方法是什么 这是我设置表格的方式 我在名为 教师 的表和名为 仪器 的表之间存在多对多关系 然后我有一个连接两者的桥接表 我想将另一个表与 BRIDGE 表关联起来 意思是乐器 老师的组合 该表有 3 行 指定老师可以教
  • Amazon RDS for SQL Server 是否支持 SSIS?

    从谷歌搜索中读到一些相互矛盾的答案 不确定答案是是 否还是可能 我觉得读的时候已经很清楚了this http docs aws amazon com AmazonRDS latest UserGuide CHAP SQLServer htm
  • 一种无需 JavaScript 即可在 PHP 中确定浏览器宽度的方法?

    首先有吗 或者我必须使用javascript 我希望能够更改使用的 CSS 因此 frex 我可以为移动设备或其他设备加载较小的字体 不幸的是 仅使用 PHP 无法检测用户分辨率 如果您使用 Javascript 则可以在 cookie 中
  • 如何在 Angular 4 中翻译 mat-paginator?

    你知道如何在 Angular 中翻译 每页项目 吗mat paginator标签 这mat paginator是材料设计中的一个元素 您可以使用MatPaginatorIntl为了这 威尔 豪厄尔制作 https github com an
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • 如何在 OSX 上安装 LaTeX .sty 文件?

    我设置了一个 LaTeX 项目 tex documents some file tex support todonotes sty where some file tex uses todonotes usepackage colorinl
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前
  • Android 材料芯片组件崩溃应用程序。无法膨胀 xml

    Tried Chip来自两个支持库的组件 com google android support design 28 0 0 rc01和材料 com google android material material 1 0 0 rc01 堆栈
  • 禁用允许文本选择的

    残疾人可以吗
  • PyAudio ErrNo 输入溢出 -9981

    我遇到了与用户相同的错误 Python 使用 Pyaudio 以 16000Hz 录制音频时出错 https stackoverflow com questions 12994981 python error audio recording
  • 探查器模板可以迁移到较新版本的 SQL Profiler 吗?

    是否可以将 Profiler 模板迁移到较新版本的 SQL Server 就我而言 我想将 SQL 2008 模板带到 2012 年 我尝试过 1 直接文件复制和 2 导出 导入 在这两种情况下 旧模板都会运行 但无法修改 修改后会出现以下

随机推荐

  • 当没有更多引用时,如何从缓存中删除智能指针?

    我一直在尝试使用智能指针来升级现有的应用程序 并且我正在尝试克服一个难题 在我的应用程序中 我有一个对象缓存 例如 我们称它们为书籍 现在 书籍的缓存是通过 ID 请求的 如果它们在缓存中 则返回它们 如果不在缓存中 则从外部系统请求对象
  • 分类:如果一个类的数据量是另一类的 4 倍,会发生什么?

    我正在尝试调试我的分类器的问题 问题在于 尽管准确率接近 80 但它总是针对给定输入预测相同的类别 我训练 CNN 来检测两个类别之间的差异 A 类有 2575 个 jpeg B 类有 665 个 jpeg 这是否会导致我的 CNN 始终预
  • Tomcat 8、axis2 webservices aar、spring jndi 未绑定在上下文中

    我一直在解决在 axis2 Web 服务运行的上下文中找不到 JNDI 名称的问题 当我使用 spring 时 仅在 Tomcat 8 中出现此问题 一些细节 我将提供相关的元素 1 服务 xml
  • 通过 REST api (v2) 将文章发布到公司 LinkedIN 页面

    使用 LinkedIn REST API v2 我正在寻找一种将文章发布到我公司的 LinkedIn 页面的方法 我已经在这里注册了https business linkedin com marketing solutions market
  • Xcode 11 Beta 5 未显示 Swift 5.1

    我已经从苹果网站下载了 XCode 11 并且正在尝试将我的代码升级到 Swift 5 1 但 XCode 没有提供该选项 另外 我没有看到可用的 iOS 13 模拟器 我以前从未遇到过这个问题 所以我错过了什么 我的操作系统已更新为 Ma
  • 如何在没有任何值得计算的事情发生的情况下减少 XNA 游戏 CPU 使用率?

    新的 XNA 游戏项目应用程序在窗口处于活动状态时会消耗相当多的 CPU 百分比 在我的台式电脑上 它大约是 2 核处理器的 1 个核心的 30 当窗口失去焦点时 游戏将进入空闲模式并消耗约 1 的 CPU 在我最近使用 XNA 制作的图像
  • 为什么非 vi* 的模态编辑器如此之少? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 Pretty much every other editor that isn t a vi descendant vim cream vi e
  • 如何在《子弹物理》中控制玩家角色?

    我不知道你应该如何控制子弹中的玩家角色 我读到的方法是使用提供的 btKinematicCharacterController 我还从演示中看到了使用 btDynamicCharacterController 的方法 然而 手册中指出运动控
  • Azure Functions 是否适合长时间运行的任务?

    A TCP 主机服务器位于本地 现在 我需要从 Azure 环境连接主机服务器 连接建立后 主机服务器将不断发送消息 收到的消息将转发到Azure服务总线队列 我得到了以下架构 简化 该架构提出了一个功能应用程序 它将用于与本地服务器连接
  • 如何更改textmate中的文件类型

    当您在 Textmate 中打开新文件时 它会给您一个选择 它会询问您文件类型是什么 并让您为新文件选择语法 那么选择一次语法后如何更改文件语法呢 底部栏上有一个按钮 你按下它 它们就在那里 所有可能的语法模式及其快捷键
  • 用于插入另一个文档的 Google Docs 脚本

    我希望使用自定义菜单插入另一个整个文档 我的想法是 我创建了一组带有自定义表格的谷歌文档 然后用户可以从菜单中运行脚本来插入表格 模板 创建菜单很容易 createMenu 并添加我可以做的菜单项 但是我该如何创建一个脚本来复制另一个 go
  • Dockerfile 中的符号链接命令不会在容器中创建链接

    在我的 Dockerfile 中有这一行 RUN ln s var www html some file var www html another file 运行 docker build 时 会执行所有步骤 包括创建符号链接 但是当我使用
  • Git 分支/变基良好实践

    我有以下场景 3个分支机构 掌握 MyBranch 从 Master 中分支出来 目的是开发系统的新功能 MyBranch Local 从 MyBranch 分支出来作为我的本地分支副本 MyBranch 正在针对其他开发人员 他们正在开发
  • NSCocoaErrorDomain 代码=256

    我已经被这个问题困扰了一段时间 似乎无法解决这个问题 我试图从 URL 中将 URL 的内容作为字符串读取 但我得到了一个奇怪的结果 错误 gt 错误域 NSCocoaErrorDomain 代码 256 操作无法完成 Cocoa 错误 2
  • python:运行外部程序并将输出直接输出到文件并等待完成

    我想从 python 运行外部程序 将输出 大量文本 重定向到日志文件并等待该程序完成 我知道我可以通过 bash 做到这一点 bin bash my external program gt log file 2 gt 1 echo don
  • PHP 中的 bindParam 覆盖错误

    这有点奇怪 我很可能编码完全错误 因此为什么我在两天内在脚本的完全不同部分两次遇到相同的错误 我正在使用的代码如下 public function findAll constraints array Select all records S
  • 自增列:Oracle和MySQL SQL语法的差异

    我是一名大学生 需要使用 Oracle 的 iSQL Plus 提交课程作业 我正在尝试使用以下 SQL 语句创建一个表 CREATE TABLE Category id INT 11 NOT NULL AUTO INCREMENT tit
  • 如何组合这些命令在 ImageMagick 中实现圆形裁剪?

    如何组合这些命令在 ImageMagick 中实现圆形裁剪 所以这个命令有效 convert size 200x200 xc none fill samia jpg draw circle 100 100 100 1 circle thum
  • Javascript 播放 Div 中的所有音频元素

    我正在使用 bootstrap3 player 在我的网站上实现音频播放器 它运行良好 但缺乏 播放所有歌曲 的功能 我必须单击每首歌曲才能播放它 我把这些歌曲整理成专辑 单击专辑会打开一个折叠窗口 显示各个歌曲 这是专辑 div 的样子
  • 尝试使用 Firebase Admin SDK 创建自定义令牌时出现“调用者没有权限”

    Error 打电话时admin auth createCustomToken 我收到以下错误 Error The caller does not have permission Please refer to https firebase