为什么要使用双token

为什么要使用双token

想知道这个问题的答案,我们先了解一下单点登录(SSO)。

单点登录(Single Sign-On,SSO)是一种认证技术,允许用户使用单一的登录凭据(如用户名和密码)访问多个独立的软件系统。SSO系统的一个常见例子是Google账户,用户登录一次Google账户后,可以访问Gmail、Google Drive、YouTube等多个Google服务。

实现单点登录的方式

一、Cookie+Session模式

在这里插入图片描述
首先,用户用账号密码访问认证中心。校验通过后,服务器在一个session表中存储一个键值对,key是sessionId,value是用户的一些信息。然后,服务器将sessionId返回给用户。用户将sessionId存储起来,访问子系统时带上sessionId。子系统无法直接校验sessionId,所以会将sessionId发给认证中心。认证中心查找session表,如果表中有记录,则校验通过,并通知子系统,子系统就可以将受保护的资源返回给用户。

  • 优点:可以方便地控制用户。例如,如果用户进行了违规操作,可以通过删除认证中心的session表中的对应记录来禁止其登录。
  • 缺点:维护成本较高,需要维护集中式的session存储,并确保其高可用性和可靠性,需要额外的负载均衡和故障转移机制。扩展性差,每次认证都需要访问集中式的认证中心,当用户量大时,认证中心可能成为性能瓶颈。
二、双Token模式

在这里插入图片描述

首先介绍单Token模式。

用户用账号密码访问认证中心,校验通过后,服务器生成一个token(通常使用JWT)并返回给用户。用户请求子系统时带上token,子系统通过解析token来校验其有效性。

  • 优点:各个子系统就不依赖于认证中心,降低了系统间的耦合和成本。
  • 缺点:这种模式下,对用户的控制变得困难。例如,需要让某个用户下线时,需要通知各个系统。

因此,引入了双Token模式。

用户用账号密码访问认证中心,校验通过后,服务器生成两个token:一个是accessToken即访问token,有效时间短(如10分钟或20分钟),另一个是refreshToken即刷新token,有效时间长(如一天或一周)。用户访问子系统时使用accessToken,如果accessToken过期,则使用refreshToken向认证中心请求新的token,此时accessToken和refreshToken都会更新,然后用户使用新的accessToken访问子系统。

这种模式下可以保证对用户的控制,因为accessToken的有效时长较短,用户需要隔一段较短的时间访问一次认证中心。例如,如果用户进行了违规操作,可以通过认证中心不给其新的token来禁止其继续访问。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值