JWT 验证的 Google Public 密钥在哪里?

Where is the Google Public Key for JWT validation?

我有一个 Angular11 UI 前端利用 Google 的 RS256 身份验证

  1. import { SocialAuthService, GoogleLoginProvider, SocialUser } from 'angularx-social-login';
  2. 在 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 签名”,

Instead of installing the public key on the Application server, it's much better to have the Authentication server publish the JWT-validating public key in a publicly accessible Url.

我找到了 Erji 的这个 JWK(不是 JWT)link https://www.googleapis.com/oauth2/v3/certs from Google Identity。这是正确的 public 键吗?

它不完全是 x509 证书,但是是的,JWK 用于验证给定的签名 JWT。

如果我们检查在 Googles documentation

中找到的 .well-known 端点

它指向我们,

jwks_uri    "https://www.googleapis.com/oauth2/v3/certs"

对于包含用于验证已签名 JWT 的当前有效密钥的 JWK。 public 密钥可以由 JWK 端点

中包含的信息构建

中的n是密钥本身,alg是签名算法,kid是密钥标识符。

RFC7517 定义了 JWK 标准并具有字段的完整详细信息