首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JWT验证失败:无法为小孩在公钥集中找到匹配的密钥

JWT验证失败:无法为小孩在公钥集中找到匹配的密钥
EN

Stack Overflow用户
提问于 2020-10-12 00:34:27
回答 1查看 2.7K关注 0票数 0

我使用google-auth-library-nodejs通过env变量提供凭证来生成JWT,类似于来自这里的示例代码。

代码语言:javascript
复制
const credentials = JSON.parse(JSON.stringify(env.service_account.credentials));
const client = auth.fromJSON(credentials);
const url = 'my_url';
const token = await client.fetchIdToken(url);

稍后使用该令牌进行身份验证时,由于以下错误,请求将失败:

JWT验证失败:无法在kid=7da7843e8637d669bc2a12622cede2a8814d11b1的公钥集中找到匹配密钥

https://jwt.io/#debugger-io确认生成的JWT的子类确实是7da7843e8637d669bc2a12622cede2a8814d11b1,但是json中的私钥id是6bd5b5d36f9a4225bd814ff3d6909d95e23e0793

这是json

代码语言:javascript
复制
'{
  "type": "service_account",
  "project_id": "project_id",
  "private_key_id": "6bd5b5d36f9a4225bd814ff3d6909d95e23e0793",
  "private_key": "-----BEGIN PRIVATE KEY-----\nXXXXXXXXXXX\n-----END PRIVATE KEY-----\n",
  "client_email": "my_service_account@project_id.iam.gserviceaccount.com",
  "client_id": "REDACTED",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/my_service_account%40project_id.iam.gserviceaccount.com"
}

孩子应该和privat_key_id匹配吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-13 13:28:56

上述问题中提供的client_x509_cert_url不是正确的x-google-jwks_uri。它实际上必须是https://www.googleapis.com/oauth2/v1/certs

更改URI后,kid的匹配。

如果有人知道这是为什么,那将是非常感谢的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64310317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档