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;