gpt4 book ai didi

firebase - Firebase verifyIdToken() 在缓存时是否需要为每个新 token 调用 Firebase API?

转载 作者:行者123 更新时间:2023-12-03 08:28:41 27 4
gpt4 key购买 nike

我在一个项目中使用 Firebase,其中使用 Firebase token ID 作为不记名 token 来对用户进行身份验证。

项目工作正常,但我想知道 verifyIdToken() 在缓存时如何工作。

现在,该项目的工作方式如下:

  1. 客户端登录客户端应用并检索 Firebase tokenId
  2. 客户端调用服务器使用tokenId作为Bearer token进行授权。
  3. 服务器使用 verifyIdToken() 来验证用户。

问题与 verifyIdToken() 方法有关,以及是否有必要对每个新 token 调用 Firebase API。

我已阅读 this问题在哪里说:

VerifyIdToken() is also optimized for performance. It caches the Firebase token public cert (valid for 6 hours) which is used to validate the token signature on local machine. No RPC is involved except for downloading the public cert.

此外,this答案说:

When you call verifyIdToken, the Admin SDK decodes the token with the public key and verifies that the signature is valid. It downloads this key from Google's servers, but it's cached for 24 hours

以及评论:

verifyIdToken() fetches public keys from Google servers. But these get cached up to 24 hours, and so the RPC call overhead gets amortized.

但是,下载并缓存了什么证书?来自用户还是项目?

那么,服务器是否需要在从客户端获取的每个新 tokenId 上调用 Firebase API,或者服务器可以在没有互联网连接的情况下使用缓存的证书进行解码吗?

主要目标是减少对 Firebase API 的调用次数,因此我想知道如果每 24 小时下载一次 Perm 缓存,服务器是否可以在没有互联网的情况下解码项目的每个有效 token 。

提前致谢。

最佳答案

But, what cert is downloaded and cached? From user or project?

ID token 使用私钥进行签名。 SDK需要获取对应的公钥证书来验证签名。这来自https://www.googleapis.com/robot/v1/metadata/x509/[email protected]

So, do server needs a call to Firebase API on each new tokenId getting from the client or can the server decode without internet connection using cached cert?

服务器第一次验证 token 时需要能够获取公钥证书。然后,只要缓存的证书保持有效(最多 24 小时),它就可以在没有连接的情况下运行。但这不是您可以控制的,因此您不应该依赖它。

The main goal is to decrease number of calls to Firebase API, so I want to know if with perm cached downloaded every 24h, server can decode every valid token for the project without internet.

这取决于您的服务器的实现和部署方式。公钥缓存与 SDK 创建的 Auth 对象实例相关联。如果您的服务器是持久的,Auth 实例将保留在内存中,缓存也将保留在内存中。在这种情况下,您可以期望服务器每 24 小时进行大约 1 次 rpc(使用相同的缓存证书来验证所有 token )。

但是,如果您的服务器是临时的(例如 Cloud Functions),那么 Auth 实例将被多次创建和清理。在这样的部署中,缓存不会产生很大的影响,并且服务器最终将为服务器的每次调用创建一个 rpc。

关于firebase - Firebase verifyIdToken() 在缓存时是否需要为每个新 token 调用 Firebase API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65809543/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com