JWT 验证的 Google 公钥在哪里?
Posted
技术标签:
【中文标题】JWT 验证的 Google 公钥在哪里?【英文标题】:Where is the Google Public Key for JWT validation? 【发布时间】:2021-08-14 05:50:04 【问题描述】:我有一个使用 Google 的 RS256 身份验证的 Angular11 UI 前端
import SocialAuthService, GoogleLoginProvider, SocialUser from 'angularx-social-login';
在 app.module.ts 中添加
providers: [ id: GoogleLoginProvider.PROVIDER_ID, provider: new GoogleLoginProvider('my Google-Client-ID')]
当 Google 将 JWT 令牌发回给我时,我会将其发送到我的 NodeJS 应用服务器,以便为会话建立基于 JWT 的通信,因此此 NodeJS 应用服务器必须验证此 JWT。根据此angular-university.io article 部分“利用 RS256 签名”,
不是在应用服务器上安装公钥,而是 最好让身份验证服务器发布 可公开访问的 Url 中的 JWT 验证公钥。
我从 Erji 的 Google Identity 找到了这个 JWK(不是 JWT)链接 https://www.googleapis.com/oauth2/v3/certs。这是正确的公钥吗?
【问题讨论】:
【参考方案1】:它不完全是 x509 证书,但是是的,JWK 用于验证给定的签名 JWT。
如果我们检查Googles documentation 中的.well-known
端点
它指向我们,
jwks_uri "https://www.googleapis.com/oauth2/v3/certs"
对于包含用于验证已签名 JWT 的当前有效密钥的 JWK。公钥可以由 JWK 端点中包含的信息构建
n
是密钥本身,alg
是签名算法,kid
是密钥标识符。
RFC7517 定义了 JWK 标准并提供了有关字段的完整详细信息
【讨论】:
以上是关于JWT 验证的 Google 公钥在哪里?的主要内容,如果未能解决你的问题,请参考以下文章