在节点管理 sdk 中对其进行身份验证后,我是否应该将 Firebase idTokens 缓存一段时间?
Should I cache Firebase idTokens for a while, after I authenticated it in node admin sdk?
我正在构建一个应用程序,除了 Firebase 之外,我还需要使用我自己的后端。我也需要在我的后端验证登录用户。所以我找到了this tutorial which does this. I send an idToken and verify this header in admin sdk in my node, based on the docs。我想我可以在第一次验证后用 redis 或只是一个 js 映射缓存此令牌 10 分钟或用户会话所需的时间,以加快速度,而不是在 10 分钟的会话中验证每个请求。我也可以将令牌缓存在 phone 中一段时间?
我的问题是,这会带来什么安全后果?谢谢。
为了澄清我没有使用自定义令牌,我将使用内置的 Firebase 身份验证。
一些 Firebase 后端服务会保留一小部分最近的 ID 令牌及其解码结果的缓存。因此,如果他们收到完全相同的令牌,他们将使用已经解码的结果。这是一个无风险的操作,因为解码操作是幂等的:相同的输入将始终提供相同的输出。
约定是在每次请求时将 ID 令牌发送到您的后端。如该文档中所示,使用 Admin SDK verify the token 并不昂贵。不花钱
通常您应该做的是使用侦听器检测 ID 令牌何时更改(它将每小时自动刷新一次),并继续使用该令牌,直到 SDK 向您的回调发送一个新令牌。在 Web 客户端中,您应该使用 onIdTokenChanged 来注册回调以获取此令牌随时间的更改。无需保留或缓存此令牌 - 只需使用最近提供的回调即可。
我正在构建一个应用程序,除了 Firebase 之外,我还需要使用我自己的后端。我也需要在我的后端验证登录用户。所以我找到了this tutorial which does this. I send an idToken and verify this header in admin sdk in my node, based on the docs。我想我可以在第一次验证后用 redis 或只是一个 js 映射缓存此令牌 10 分钟或用户会话所需的时间,以加快速度,而不是在 10 分钟的会话中验证每个请求。我也可以将令牌缓存在 phone 中一段时间?
我的问题是,这会带来什么安全后果?谢谢。
为了澄清我没有使用自定义令牌,我将使用内置的 Firebase 身份验证。
一些 Firebase 后端服务会保留一小部分最近的 ID 令牌及其解码结果的缓存。因此,如果他们收到完全相同的令牌,他们将使用已经解码的结果。这是一个无风险的操作,因为解码操作是幂等的:相同的输入将始终提供相同的输出。
约定是在每次请求时将 ID 令牌发送到您的后端。如该文档中所示,使用 Admin SDK verify the token 并不昂贵。不花钱
通常您应该做的是使用侦听器检测 ID 令牌何时更改(它将每小时自动刷新一次),并继续使用该令牌,直到 SDK 向您的回调发送一个新令牌。在 Web 客户端中,您应该使用 onIdTokenChanged 来注册回调以获取此令牌随时间的更改。无需保留或缓存此令牌 - 只需使用最近提供的回调即可。