You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

集成Google登录的网站,用Refresh Token换Access Token时如何验证身份?

验证refresh_token刷新请求的身份合法性

当你用存储的refresh_token请求新access_token时,核心是要确认发起请求的人就是该refresh_token对应的用户,这里有几个实用的验证方式:

  • 绑定用户会话与refresh_token
    用户登录后,后端要维护一个有效的会话(比如用服务器端Session,或者给前端发JWT)。前端每次请求刷新token时,必须带上这个会话标识。后端先验证会话是否有效,再确认会话对应的用户ID和数据库中存储该refresh_token的用户ID一致,之后再调用Google的刷新接口。这样只有当前登录的用户才能触发自己的refresh_token刷新,避免他人盗用。

  • 用过期的access_token验证身份
    虽然access_token过期了,但它包含的用户唯一标识(Google的sub字段)依然有效。前端请求刷新时,把过期的access_token一起传给后端。后端用Google的公钥验证这个token的签名(忽略过期时间),解析出sub字段,再和数据库中绑定该refresh_token的用户sub对比,匹配上再执行刷新。这样能确保请求者确实持有过该用户的有效access_token,是合法所有者。

  • 启用refresh_token轮换机制
    Google支持refresh_token轮换:每次用旧的refresh_token请求新access_token时,Google会返回一个新的refresh_token,旧的随即失效。后端每次刷新后,要把数据库里的旧refresh_token替换成新的,同时确保只有当前登录的用户能触发这个操作。就算refresh_token意外泄露,也只能被使用一次,后续无效,大大降低风险。

另外要注意:后端的刷新接口必须做权限拦截,拒绝匿名请求;解析access_token时一定要验证签名,防止伪造的token绕过验证。

内容的提问来源于stack exchange,提问作者stamaimer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 15:03:17