firebase - 服务器上的 Firebase 令牌验证
问题描述
我正在尝试使用 firebase 实现身份验证/授权系统,并且正在努力处理授权流程的最后一部分,即使我的服务器能够验证令牌的有效性。
有两种方法可以执行此操作:
- 使用 firebase 的 Admin SDK 验证令牌,本质上是服务器与 Firebase 通信并验证令牌(安全选项)
- 使用第三方 JWT 库验证令牌。
我的问题与选项(2)有关,根据文档,这是完全可行的。问题是,这怎么安全?根据以下内容,令牌验证过程中包含的所有内容都是公开的:
最后,确保 ID 令牌由与令牌的孩子声明对应的私钥签名。从https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com获取公钥并使用 JWT 库来验证签名。利用
如果令牌是公开的,并且验证它的密钥是公开的,那么谁保证令牌是真实的?
可能有一些与我遗漏的 JWT 相关的东西?
PS。我已经使用远程验证实现了选项 (1),但这会显着影响应用程序的性能。
解决方案
您可以使用公钥验证令牌的有效性,但您只能使用私钥创建令牌。
正如他们的名字所暗示的:
您的私钥只能在受信任的环境中使用,例如您的开发机器、您控制的服务器或 Cloud Functions。因此,这些是您可以生成身份验证令牌的唯一地方。
然而,公钥可以与其他人共享,这意味着他们可以使用它来确保令牌有效。
推荐阅读
- c++ - 制作具有平均值的随机数生成器
- javascript - C#中的Websecurity.Login
- solr - solr -s 选项有什么作用?
- php - preg_match 从 html 网站 php 中抓取
- r - 在 dplyr 中使用自定义 mutate 函数
- ios - 如何在标签栏按钮触摸上创建幻灯片菜单
- javascript - React Native FlatList 对象显示
- perl - 无法在 CentOS 6 上编译 Crypt::Sodium
- if-statement - 在 while 循环中暂时保留一个 if 循环,直到下一个函数调用
- c# - MemoryStream 使用太多内存并且不释放/关闭