审查生成的 JWT 中间件

来自 JWT 身份认证
Node 24 高级 6分钟 找出 5处问题

审查这段生成的 JWT 中间件,找出信任边界和时间验证缺陷。

验证库存 API 的 bearer access token,在不阻塞请求路径的前提下返回规范化主体。

JavaScript
const { readFileSync } = require('node:fs');

function authenticate(token, request) {
  const [headerPart, payloadPart, signature] = token.split('.');
  const header = decodeJson(headerPart);
  const claims = decodeJson(payloadPart);
  const key = readFileSync(`/srv/keys/${header.kid}.pem`);
  verifySignature(header.alg, key, headerPart, payloadPart, signature);
  if (claims.exp < Date.now()) throw new Error('expired');
  const scopes = Array.isArray(claims.scope)
    ? claims.scope
    : claims.scope.split(' ');
  auditLog('token accepted', claims);
  return {
    subject: claims.sub,
    role: claims.role,
    scopes,
    route: request.url,
  };
}

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误