使用 Firebase 身份验证验证 ID 令牌

2024-01-10

我们正在开始开发一个 Web 应用程序,并考虑使用 Firebase 身份验证来处理我们的注册流程。但是,我们不确定 ID 令牌验证的工作原理。似乎可以在 Firebase 领域之外使用其令牌来验证用户。我们正在考虑在 Google Kubernetes Engine 上开发一个 Node.js 应用程序——据我所知,它没有与 Firebase 身份验证集成。

Firebase 提供了这个example https://firebase.google.com/docs/auth/admin/verify-id-tokens#verify_id_tokens_using_the_firebase_admin_sdk关于如何使用 Firebase Admin SDK 验证 ID 令牌:

// idToken comes from the client app (shown above)

admin.auth().verifyIdToken(idToken)
  .then(function(decodedToken) {
    var uid = decodedToken.uid;
    // ...
  }).catch(function(error) {
    // Handle error
  });

我的问题是 Firebase 是否必须调用其服务器才能验证每个用户请求的 ID 令牌(这会增加延迟),或者它是否会长时间缓存验证令牌所需的加密密钥——我认为这就是它的工作原理。


你打电话时verifyIdToken,Admin SDK 使用公钥对令牌进行解码并验证签名是否有效。它从 Google 的服务器下载此密钥,但会缓存 24 小时(因为它几乎不会更改)。验证令牌后,它可以选择检查令牌是否被撤销,这需要再次调用 Firebase 身份验证服务器。每次调用都会发生此请求verifyIdToken.

您可以根据以下内容检查这一点源代码 https://github.com/firebase/firebase-admin-node/blob/6c7c326e2c60bc06dcfa6a9fade4b187e21cdb9b/src/auth/auth.ts#L132.

  • verifyIdToken https://github.com/firebase/firebase-admin-node/blob/6c7c326e2c60bc06dcfa6a9fade4b187e21cdb9b/src/auth/auth.ts#L132
  • fetchPublicKeys https://github.com/firebase/firebase-admin-node/blob/84d8a4fcd305398ff0737bf3cae963afe21df42b/src/auth/token-verifier.ts#L261
  • verifyJWT https://github.com/firebase/firebase-admin-node/blob/6c7c326e2c60bc06dcfa6a9fade4b187e21cdb9b/src/auth/token-verifier.ts#L136
  • verifyDecodedJWTNotRevoked https://github.com/firebase/firebase-admin-node/blob/6c7c326e2c60bc06dcfa6a9fade4b187e21cdb9b/src/auth/auth.ts#L429
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Firebase 身份验证验证 ID 令牌 的相关文章

随机推荐

  • JSON 与 XML 的性能注意事项

    我正在使用一个 Web 服务 它提供 XML 或 JSON 格式的大型结果集 哪种格式会更快或更好 基于性能 另外我应该使用哪种语言来解析 XML JSON 我应该使用 PHP 还是 JavaScript PHP 或 JavaScript
  • Android - Facebook 共享内容被覆盖

    这是我在 Facebook 上分享高分的代码 ShareLinkContent content new ShareLinkContent Builder setImageUrl Uri parse http www example com
  • 获取 Today-Extension 内通知中心的宽度

    我目前正在尝试将 CollectionView 放入 Today 扩展中 但有件事让我烦恼 我希望实现每个单元格都适合我的集合视图的一行 因此 根据项目数计算单元格宽度 在 iPhone 上一切正常 但在 iPad 上却看起来不太正常 单元
  • 将 Azure 诊断日志写入 Blob 存储的性能影响

    我们在 Azure 上运行的 C Web 应用程序使用 System Diagnostics Trace 编写跟踪语句以进行调试 故障排除 一旦我们为这些日志启用 blob 存储 使用 Azure 门户中的 应用程序日志记录 blob 选项
  • 将 Serilog 与 Azure 日志流结合使用

    我一直在研究如何使用 Serilog 写入 Azure 日志流 我也在这里找到了一些答案 例如 一个答案是建议登录到特定文件夹中的文件 home LogFiles http 但它似乎对我不起作用 我尝试使用Trace https githu
  • 添加 Material Design 时,布局预览不显示布局

    我正在开发一个 Android 应用程序 一切看起来都很完美 直到我决定使用材料设计在我的主题中 添加后材料设计主题 布局预览不显示预览 但在手机上构建时效果良好 当删除 xml 中使用的材料设计组件时 一切都完美运行 附上我的代码 活动主
  • 列出文件中的 unicode 单词

    我的代码是 f codecs open r C Users Admin Desktop nepali txt r UTF 8 nepali f read split for i in nepali print i 显示文件中的单词 但是当我
  • 如何修复:致命错误:openssl/opensslv.h:RedHat 7 中没有这样的文件或目录

    我有 RedHat Enterprise Linux Server 7 并且下载了 linux 内核版本 4 12 10 我正在尝试编译它 但是当我执行以下命令时 make modules 我收到以下错误 scripts sign file
  • 使用默认过滤器值加载数据表

    尝试使用数据表中的输入框构建自定义搜索 请找到小提琴版本 http jsfiddle net c6cu705n http jsfiddle net c6cu705n 我试图仅加载表中的 San Francisco 值 而不加载其他值 尝试了
  • 如何使 ProgressDialog 可以通过后退按钮取消,但不能通过屏幕点击取消?

    我想做一个ProgressDialog可以通过后退按钮取消 但不能通过屏幕点击取消 目前我使用setCancelable true 然而 在一些较新的设备中 点击屏幕也会取消ProgressDialog 我想禁用屏幕点击操作Progress
  • iOS UITextField 在文本更改时更改位置

    我用它来将文本字段置于相关内容的中心 textField setCenter someObject center textField becomeFirstResponder 这看起来很棒 很漂亮 并且位于对象的中心 可以接受文本 我希望文
  • Python smtplib 代理支持

    我想通过代理发送电子邮件 我目前的实现如下 我通过身份验证连接到 smtp 服务器 成功登录后 我会发送一封电子邮件 它工作正常 但当我查看电子邮件标题时 我可以看到我的主机名 我想通过代理来传输它 任何帮助将不胜感激 Use Socksi
  • OracleConnection 生命周期 - 最佳实践

    我正在使用标准 Oracle 驱动程序连接到数据库 但对于 OracleConnection 的生命周期 我不太同意我的同事的观点 创建成本高吗 它是线程安全的吗 我可以在请求之间重复使用它 还是应该为每个请求创建一个新的 如果能更详细地解
  • 从 ExecutorService 更新 JProgressBar

    我正在使用 Java ICMP ping 功能对网关进行 ping 操作 为了执行快速 ping 我使用 ExectorService 创建用于 ping 的线程 地址被 ping 或不 后 我想在 ping 后更新 Jprogressba
  • Eclipse 和 Android XML 布局给出“‘默认’不是任何设备/区域设置组合的最佳匹配”

    这是我第一次使用 XML 布局制作应用程序 过去我总是在运行时动态生成布局 所以不用担心 我不是 Android 新手 不过 这是我第一次使用静态布局 那么这条消息到底是关于什么的呢 2010 09 22 20 43 23 Rockport
  • Bootstrap css,如何使导航栏切换始终可见?

    我想添加在移动设备上显示的按钮之一 以便打开导航栏中的折叠菜单 但到目前为止还无法做到 这里是较少的代码和 html navbar toggle always navbar toggle media min width 768px disp
  • MongoDB 汇总之前所有周的每周总和

    我有一系列 MongoDB 文档 一个示例文档是 createdAt Mon Oct 12 2015 09 45 20 GMT 0700 PDT year 2015 week 41 想象一下这些跨越一年中的所有几周 并且同一周可能有很多 我
  • Modernizr:如何检测 CSS display:table-cell 支持?

    我想用display table and display table cell对于我在支持它的浏览器中的布局 在 IE7 中 我只是想浮动我的列 因为我假设它不可能在该浏览器中工作 但无法找到有关如何使用 Modernizr 执行此操作的任
  • 如何在 matplotlib 中绘制 datetime.time ?

    我有两个要显示的数组 x datetime time 0 17 47 782000 ect y 1712 2002 ect 我正在尝试将 x 转换为 matplotlib 使用的格式 但它永远不会工作 x matplotlib dates
  • 使用 Firebase 身份验证验证 ID 令牌

    我们正在开始开发一个 Web 应用程序 并考虑使用 Firebase 身份验证来处理我们的注册流程 但是 我们不确定 ID 令牌验证的工作原理 似乎可以在 Firebase 领域之外使用其令牌来验证用户 我们正在考虑在 Google Kub