Google OAuth JWT 本地验证

Google OAuth JWT Verification locally

我正在开发一个使用 google 登录的网站。用户登录后,我从 google js api 获取一个 id 令牌并发送到服务器进行验证。

我可以使用 Google 令牌信息端点轻松验证并完成该过程,但这会导致大量 HTTPS 请求,因为它会在每次用户时向 google 发送 HTTPS 请求使用 google.

登录

因此我在服务器本地验证了 JWT(id 令牌),我已经成功地验证了 JWT,没有问题。我面临的问题是我必须在程序中缓存 google public JWKs

每次找不到相应 JWT 的正确 JWK 时,我都在考虑更新 JWK "kid"。但这会导致每次找不到对应 "kid" 的 JWK 时,都会向 google 发送 HTTPS 请求。

这会是一个漏洞吗? 是否有一个固定的时间段我应该更新 Google public JWK?

有人可以帮我解决这个问题吗?如果我做错了什么,请指出正确的方向

谢谢

在受 TLS 保护的端点上发布密钥的意义在于您可以快速轮换它们。 Google 这样做。每次出现带有之前未缓存的 kid 的令牌时,您都需要获取新密钥。如果您确保验证 Google 在 JWKs 端点上提供的 TLS 服务器证书,则不会存在漏洞。 Google 使用的可能是静态轮换间隔,但尝试使用它只会增加下载次数(与 "just-in-time" 相对),并且 Google 可能会随意更改间隔。