跳到主要内容

JWT 认证与权限

如何建立 JWT 身份链路?​

登录凭据 → 验证密码散列 → 签发短期 access token
请求 Bearer token → 验签与 claims 校验 → 写入 user_id → Handler
  • authentication: 确认调用者身份;
  • authorization: 判断身份是否能执行具体操作;
  • JWT: 自包含的签名声明; 默认不是加密容器,不存放敏感数据;
  • Hertz 集成: 可使用 hertz-contrib/jwt,也可实现小型认证中间件;

如何约束 JWT 声明?​

  • sub: 稳定用户 ID;
  • iss、aud: 限制签发方与使用方;
  • exp、nbf、iat: 校验有效时间;
  • jti: 需要撤销、审计或防重放时使用;
  • role/scope: 只放必要授权提示,最终权限仍由服务端规则决定;

如何在中间件验证身份?​

  • 解析 Authorization: Bearer <token>;
  • 实践: 限定允许的签名算法并校验 key;
  • 实践: 校验 issuer、audience 和时间声明;
  • 实践: 将规范化 user_id 放入 RequestContext;
  • 实践: 失败返回 401,不进入业务 Handler;