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的主要内容,如果未能解决你的问题,请参考以下文章
ERROR_PATH_NOT_FOUND 与 ERROR_FILE_NOT_FOUND,有啥区别?
在android的kotlin上用git提交项目时报错提示:Invalid authentication data. 404 Not Found - Not Found