登录双Token设计机制,背后的安全策略

平台奖励创作,可能会升级VIP文章,可以移步我的公众号:【编程朝花夕拾】,且可获取首发内容。

01 引言

登录功能是我们常见的功能,无论是Web应用还是移动设备,用户的认证和授权是确保应用安全性的重要环节。单token机制但从应用的角度已经完全可以满足功能的完成,但是从安全性角度考虑的话,还是有安全隐患的。

登录后访问资源需要携带token作为登录凭证,因为每次请求都会携带token,一旦被他人截获,就会就当前的用户的所有资源信息泄露。设置token的有效期,可以提高应用的安全性。有效期过短,系统的可用性就会降低,需要用户不断登录;有效期过长,一旦被截获,容易泄露数据。这就需要设计者在安全性和可用性上权衡。

小孩子才做选择,成年人可不可以都要。当然可以。双token机制闪亮登场,满足我们既要还要的需求。下来我们一起了解一下双token机制。

02 什么是双Token机制

token机制是通过两个token 分工合作,一长一短,功能各不相同,相互配合完成身份验证的机制。

访问令牌(access_token):

该令牌是一个短令牌,主要用于访问受保护的资源,也就是登录之后才能访问的资源。短令牌不仅有效期短,长度也会相对较短。短的有效期保证安全性,短的长度节约了传输资源。每次访问受到保护的资源都需要携带。

刷新令牌(refresh_token):

该令牌是一个长令牌,主要是在访问令牌过期后,携带次令牌获取新的访问令牌和刷新令牌,客户端使用新的访问令牌继续访问,无需重新登录。原则上只能使用一次,不会频繁的在网络上传输,降低了被窃取的风险。长令牌不仅有效期相对长,长度也会相对较长,增加记忆的难度,这也是安全性的考虑。刷新令牌一旦过期,用户就需要重新登录。

微信的登录授权的流程就是使用了双token机制:微信授权接口文档

03 工作机制流程

主要分为两个阶段:获取令牌和刷新令牌

获取令牌阶段:

用户登录,服务端验证用户信息,验证通过之后,签发access_tokenrefresh_token,设置有效期,并返回给客户端。

刷新令牌阶段:

用户访问受保护的资源,服务端校验access_token过期,返回给客户端,客户端发起刷新令牌的请求,服务端再次验证refresh_token。若过期,则让客户端重新登录,若没过期,则重新签发access_tokenrefresh_token,设置有效期,并返回给客户端。

04 如何保证安全性

token机制弥补了单token的不足,它是如何保证安全的呢?

  • 短有效期的access_token ,因为频繁的传输,被窃取的可能就会变高,所以设置较短的有效期,即便被窃取了,也不会造成严重的损失。
  • 长有效期的refresh_token,只有在短token过期的时候才会被传输,所以减少了被窃取的可能性。而长token本身也有有效期,服务器端也会验证长token 的有效性。长token 只能使用一次,用完即失效,同样增加了安全性。
  • 在用户退出登录、修改密码、挂失等操作下,可以对refresh_token 进行撤销操作,防止被恶意使用。

05 小结

token机制的功能已经介绍完了,你们平时在开发登录的时候,会选用怎样的方式呢?有没有一个token走天下呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智_永无止境

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值