文档首页> 数据与安全> API 鉴权:Token 过期与刷新机制

API 鉴权:Token 过期与刷新机制

发布时间:2026-09-05 14:05        更新时间:2026-09-06 14:04
接口的令牌该多久过期,没有统一答案,但有一条边界原则:越短越安全,越短越折腾用户。权衡就落在"过期加刷新"这套机制上——访问令牌管日常,刷新令牌管续期,两把钥匙分开用。 一、短寿命的访问令牌 access token(访问令牌)是调用接口的通行证,寿命建议压在十五分钟到两小时之间。短寿命的收益算得出来:令牌一旦泄露,攻击者的可用窗口就是剩余有效期,十五分钟的有效期把一次泄露的损失锁在小窗口里。服务端校验时除了有效期,还要核对签发对象与权限范围,令牌对但越权的调用当场拒绝。 二、刷新令牌只干一件事 refresh token(刷新令牌)寿命长,但只允许做一件事:换取新的访问令牌。安全设计三个要点:一次性使用,换发后旧刷新令牌立即作废,重放旧令牌应触发整组会话失效;绑定环境,记录签发时的设备与地址特征,特征突变要求重新登录;可吊销,用户改密或管理员封禁时,能一次作废其名下全部刷新令牌。只换不吊销的刷新机制,等于给泄露留了后门。 三、防重放要另下一道锁 HTTPS 只保证传输加密,截获重放在敏感场景还要单独防。常用做法是时间戳加随机数:请求带上时间戳和一次性 nonce,服务端在几分钟窗口内校验时间偏差,nonce 在有效期内不得重复,重放请求直接丢弃。支付、改绑这类接口值得加这道锁,普通查询接口靠短有效期就够。 四、客户端存放也有讲究 浏览器端不要把令牌放 localStorage(跨站脚本能直接读走),优先用 HttpOnly Cookie 或内存加静默刷新;服务端绝不存令牌明文,哈希后比对即可。 过期与刷新的参数没有一劳永逸的答案,先按短有效期加一次性刷新令牌落地,再根据线上异常日志微调,比一次性设计到位更现实。