jwksError: Not Found 在 GET 请求期间由 jwks-rsa 模块抛出,带有授权不记名令牌到受保护的 api

Posted

技术标签:

【中文标题】jwksError: Not Found 在 GET 请求期间由 jwks-rsa 模块抛出,带有授权不记名令牌到受保护的 api【英文标题】:jwksError: Not Found thrown by jwks-rsa module during GET request with auth bearer token to protected api 【发布时间】:2021-03-24 01:54:33 【问题描述】:

当我使用请求标头中的正确承载令牌向受保护的 API 发出获取请求时,会引发错误 - “jwksError: Not Found”。我按照启动指南创建了 jwtCheck 辅助函数,我将其传递给所有路由以保护它们。我需要帮助澄清这个错误的实际含义!谢谢!

这里我定义了辅助函数jwtCheck,它将用于保护所有路由。

var jwtCheck = jwt(
  secret: jwksClient.expressJwtSecret(
    cache: true,
    rateLimit: true,
    jwksRequestsPerMinute: 5,
    jwksUri: https://$auth0Domain/.well-known/jwks.json,
  ),

  algorithms: ['RS256'],
  issuer: https://$auth0Domain/,
  audience: auth0ApiIdentifier,
);

然后我使用上面定义的 jwtCheck 来保护我的 api。之后,如果有人尝试向它发送 http 请求,而请求中没有带有身份验证承载令牌的标头,则 api 将抛出未经授权的错误。

const app = express();
...
app.use(jwtCheck);
...

我通过向 auth0apiIdentifier/oauth/token 发送 POST 请求并将以下内容放入 req 正文中来获取新的 Bearer 令牌:


    "client_id":id,
    "client_secret":secret,
    "audience":auth0apiIdentifier,
    "grant_type":"client_credentials"

在使用适当的不记名令牌通过邮递员发送获取请求后,rwks-rsa 模块会引发后续错误:

JwksError: Not found.
    at ../server/node_modules/jwks-rsa/lib/JwksClient.js:119:23
    at ../server/node_modules/jwks-rsa/lib/wrappers/request.js:36:12
    at processTicksAndRejections (internal/process/task_queues.js:93:5)

Img 1 - POST request to get new auth Bearer token from Auth0 Img 2 - GET request sent with postman and corresponding error thrown by jwks-rsa module.

【问题讨论】:

【参考方案1】:

我已经解决了!该错误太模棱两可了,但是在绝望之后,我再次检查了我的配置,我发现我在 auth0apiIdentifier 的末尾包含了一个“/”,这允许在 jwksUri 中出现一个“//”,这导致了问题。解决这个错字是我的解决办法。

检查您的代码伙计们!和平!

【讨论】:

以上是关于jwksError: Not Found 在 GET 请求期间由 jwks-rsa 模块抛出,带有授权不记名令牌到受保护的 api的主要内容,如果未能解决你的问题,请参考以下文章

vs安装 products not found

command not found怎么办

ERROR_PATH_NOT_FOUND 与 ERROR_FILE_NOT_FOUND,有啥区别?

Resource not found高手进

节点 MODULE_NOT_FOUND

在android的kotlin上用git提交项目时报错提示:Invalid authentication data. 404 Not Found - Not Found