概述JWT 适合携带声明用于认证与授权,但必须配合刷新令牌与撤销机制保证安全与可控。本文提供参数建议、旋转与存储策略,并给出验证清单。签名与声明(已验证)算法:优先 `RS256/ES256`,私钥仅服务端持有;拒绝 `none` 算法。必备声明:`iss`(发行者)、`aud`(受众)、`exp`(过期)、`iat`(签发时间),以及主体 `sub` 与权限范围 `scope`。最小化负载:仅包含必要声明,避免敏感信息写入令牌。访问令牌与刷新令牌访问令牌(Access Token):短期有效(如 5–15 分钟),低泄露风险窗口。刷新令牌(Refresh Token):长期有效(如 7–30 天),仅用于换取新访问令牌,不直接授权资源。旋转(Rotation):每次刷新生成新刷新令牌并撤销旧令牌;绑定设备/客户端标识。存储与传输Cookie:`httpOnly` + `Secure` + `SameSite=Lax/Strict`,防止 XSS 窃取与 CSRF。前端不使用 `localStorage` 存储敏感令牌;采用授权码流程(PKCE)。令牌不出现在 URL 与日志;通过 Authorization 头传输访问令牌。撤销与黑名单维护刷新令牌黑名单(或状态存储)并记录最近一次使用时间与指纹;一旦异常使用立即作废。设备注销与风险事件(密码修改、权限变更)触发全部令牌失效。验证清单校验签名与算法固定;校验 `iss/aud/exp/nbf`;校验会话状态与黑名单;限定来源与设备指纹(可选);示例(伪配置)accessTokenTTL=10m, refreshTokenTTL=14d algo=RS256, keyRotation=90d cookie: httpOnly+Secure+SameSite=Lax refresh: rotate=true, revokeOnSuspicious=true 常见误区访问令牌长期有效导致泄露风险扩大。刷新令牌不旋转或无撤销通道,无法阻断风险。将令牌存入 `localStorage` 被 XSS 轻易窃取。结语以短期访问令牌、可旋转刷新令牌与严格校验为核心,辅以 Cookie 安全与黑名单机制,可显著提升会话安全与可管控性。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部