2022-05-11 双Token授权

前言

在求解token窃取问题中,发现了双Token的使用,这里梳理一下对双Token的理解,在后续去实践一个可靠的应用方案。

首先说一下避免token窃取问题,也就是避免中间人窃取服务器颁发Token,尽管我们设置的Token过期时间足够短,在该有效时间内中间人还是可以凭借Token做一些事情,这里可以使用Https(HTTP+SSL\TLS)协议解决这个问题;HTTPS是由授权机关颁发的凭证,再由这个凭证加密告知服务器对称密钥,而建立的安全通信(不能防止中间人抓包,双方都会像权威机关认证凭证是否合法)。

双Token是由access_token和refresh_token两个组成的,一个是短期有效的access_token,一般有效时间相对不长,30分钟或多或少(实际以场景进行变更),另一个是有效期较长的refresh_token,一般有效期一天或多或少;双Token可以实现长时间凭证有效(保持登录状态)、第三方登录;

提供大家参考,若有问题欢迎指出修改。

双Token授权

access_token 访问token

access_token:与单Token相同,服务器通过辨别access_token辨认该请求是否合法;若是合法用户,则正常访问;若是非法用户,则阻止访问;若 token过期,则通过校验refresh_token是否合法,合法则颁发新access_token,不合法则阻止访问。

这里的access_token过期时间会相对较短一些,肯定会产生疑问,既然有refresh_token为什么还要access_token,不停的更新不麻烦吗?

举例:如果我们颁发一个过期时间较长的token,若该用户出现问题,如何快速阻止该用户继续访问。这里access_token可以解决这个问题,因为access_token的过期时间短,下次需要重新授权时,可以拒绝授权。

refresh_token 刷新token

refresh_token:此token作用于access_token 时,通过refresh_token是否合法颁发access_token ;由于refresh_token是一个长时间有效的,所以建议refresh_token只能使用一次,并且为了避免中间人窃取refresh_token,生成的token条件需要根据访问用户的信息来产生,比如访问IP、MAC一些大概率不重复或者唯一的,进行二次区分,排除中间人窃取refresh_token进行使用。

建议

  • refresh_token只能使用一次
  • refresh_token生成规则需要进行设计,避免窃取
  • 建议B/S使用HTTPS协议来保证数据加密,不会造成明文传输

参考文章

Access Token & Refresh Token 详解以及使用原则
用 HTTPS 就安全了?HTTPS 会被抓包吗?

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值