【发布时间】:2021-01-20 12:25:39
【问题描述】:
我在一个项目中使用 Firebase,我使用 Firebase 令牌 ID 作为不记名令牌来验证用户。
项目工作正常,但我想知道 verifyIdToken() 缓存时的工作原理。
现在,该项目以这种方式运行:
- 客户端登录客户端APP并检索Firebase tokenId
- 客户端调用服务器使用tokenId作为要授权的Bearer token。
- 服务器使用
verifyIdToken()来验证用户。
问题与verifyIdToken() 方法有关,以及是否需要在每个新令牌上调用 Firebase API。
我读过this 问题在哪里说:
VerifyIdToken() 还针对性能进行了优化。它缓存用于验证本地机器上的令牌签名的 Firebase 令牌公共证书(有效期为 6 小时)。除了下载公共证书,不涉及 RPC。
另外,this 回答说:
当您调用 verifyIdToken 时,Admin SDK 使用公钥解码令牌并验证签名是否有效。它会从 Google 的服务器下载此密钥,但会缓存 24 小时
还有评论:
verifyIdToken() 从 Google 服务器获取公钥。但是这些会被缓存长达 24 小时,因此 RPC 调用开销会被摊销。
但是,下载和缓存了什么证书?来自用户或项目?
那么,服务器是否需要在从客户端获取的每个新 tokenId 上调用 Firebase API,或者服务器是否可以在没有互联网连接的情况下使用缓存证书进行解码?
主要目标是减少对 Firebase API 的调用次数,所以我想知道每 24 小时下载一次缓存的 perm,服务器是否可以在没有互联网的情况下解码项目的每个有效令牌。
提前致谢。
【问题讨论】:
标签: firebase google-api firebase-authentication firebase-admin