为什么使用双token实现无感刷新用户认证?

单token机制

认证机制:对与单token的认证机制在我们项目中仅使用一个Access Token的访问令牌进行用户身份认证和授权的方案处理。

不足之处:

  • 安全性较低(因为只有一个token在客户端和服务器端之间进行传递,一目Acess Token被截获或者被泄露,攻击者就会在有效时间内完成模拟用户行为,访问所有受保护资源)
  • 短有效期策略限制无法撒销会话(为了提高安全性access token通常设置的时间是比较短的,然而需要频繁的去获取access token.影响的是用户的体验,尤其是长时间操作或者是后台的服务场景下就会遇到一个瓶矜,而且也无法撤销对应的汇报,如果某个token被盗用了,难以立即撤销这个token的有效性,从而不能立即中断攻击者的访问权限)
  • 无代态刷新问题(若要自动去刷新token维持长期的绘画,单token的机制需要将刷新的逻辑耦合到具体的业务流程当中,这就会增加复杂性和潜在的安全风险)
  • 没有权限细分管理(单一的access token包含所有的授权信息,不易于对不同范文或者是力度的一个资源进行精细化的访问控制)

双Token机制

操作机制:双Token主要包含了AccessToken (访问令牌) 和 RefreshToken (刷新令牌),它的出现就是为了解决单token的不足,所以才会引入双token的机制也就是 RefreshToken (刷新令牌),因为它可以延长实际的绘画时间,用户提供了一种安全的方式来去更新AccessToken,并且在必要的时候撤销特定用户的权限,而并不会影响有效的绘画内容。

实时上双token的机制是 o os 2.0标准中常见的一种实现,主要包含两个类型的token,一个是AccessToken (访问令牌) ,一个是RefreshToken (刷新令牌)

AccessToken (访问令牌):它会设置一个有效时间较短的令牌内容,用于的是用户每次请求受保护资源时,进行身份验证的操作,通常直接包含在api请求头或者是URL地址参数之中,用于证明客户端其实是有权限去访问特定的资源的

RefreshToken (刷新令牌):刷新令牌,会设置一个有效时间比较长并且安全存储比较高的一个令牌,主要用于AccessToken过期了以后,去重新获取AccessToken的操作内容。我们并不需要用户去提供一个特殊的登录凭证。因为RefreshToken 一般不会频繁的在网络上进行传输,目的就是为了降低被截取的一个风险


双token有很多优势:

  • 安全性提升(因为AccessToken和RefreshToken其实是会被分离的,即使AccessToken被盗用了,但是由于有效时间是比较短的,损失还是可以控制的,同时RefreshToken的安全性则会变的更高,一般还不暴露在网络的传输过程当中,攻击者其实很难窃取到AccessToken长期的有效访问权限)
  • 用户体验优化(RefreshToken可以实现无感知的token刷新,也就是我们所说的无感刷新,因为当AccessToken失效的时候,客户端就会自动去刷新AccessToken,利用的就是RefreshToken,用户并不需要进行一个重新的登录,从而保证操作的连贯性)
  • 权限控制灵活(而且双token机制还有很好的权限控制灵活性,可以通过控制RefreshToken的有效期,刷新次数等方式来灵活的管理用户的绘画生命周期,并且在必要的时候去撤销RefreshToken的内容从而终止后续所以AccessToken的一个访问生成)

双token流程

用户登录(主要是用户通过用户名或者是用户码或者其他凭证向服务器去进行访问)----> 

验证通过?(验证我们的一个身份,然后服务器,将会设置一个请求授权)---->

颁发Access Token & Refresh Token(当认证成功了以后,颁发两个内容,一个是Access Token 另一个 Refresh Token,Access Token是一个短期的token(比如几十分钟),Refresh Token是一个长期的token(比如可以设置几天或者更长的时间),这两个token都会返回客户端)----->

客户端存储tokens(并且客户端会进行对应的存储)--->

客户端使用Access Token访问受保护资源(查看Access Token是否已经有过期的风险,当Access Token即将或者已经过期了后,客户端用Refresh Token向服务器发送一个新的请求,获取新的Access Token,服务器验证Refresh Token有效,如Refresh Token有效就会颁发一个新的Access Token,当然在此过程中有两种不同的情况,一种是并不会刷新Refresh Token还有一种在申请Access Token的时候还可能会重新生成Refresh Token,那么这两个token的有效期时间会从当前的时间段往回深延,具体的选择需要根据实际的业务情况进行策略的抉择)--->

客户端更新存储的tokens(客户端接收到新的Access Token以后则需要替换原来的Access Token,并且在新访问的时候则使用新的token进行一个访问)

应用场景:

实时上双token我们可以应用到,单点登录,移动应用或者是web网站应用当中,或者是第三方授权操作处理等

注意事项:

Refresh Token安全的存储,需要去确定客户端确保Refresh Token在本地实现更为安全的存储操作,需要去避免被泄露,被篡改,而且对应Refresh Token需要去实时更为合理的生命周期管理和失效的策略,包括并且不限于我们响应的倒退时间还得去考虑何时更新或者是废除Refresh Token,我们需要考虑并发的处理,防止同一个Refresh Token在同一时刻被多次刷新Access Token,目的就是为了防止我们的攻击行为,那么当用户进行系统退出的时候,注销的不光是Access Token还得将Refresh Token也进行一个一统删除,确保用户在进行后续操作的时候无法在获得最新的一个授权,那么对于访问的限制,Refresh Token相关接口应该收到一个严格的控制,仅限于可性的客户端才能进行对应的访问处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/413432.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

卷级实时备份功能特点及应用场景

为满足部分对RTO和RPO指标敏感的用户需求,云祺科技通过结合卷远程复制技术和持续数据保护技术、以及高可用技术的原理,推出了一款基于卷为最小处理单元的实时容灾备份产品,其对于备份源对象具有良好的兼容性,无论是文件、影音、应…

如何做好一个信息系统项目经理,一个项目经理的个人体会和经验总结(一)

前言 作为一个信息系统项目经理,最要紧的就是要明白什么是因地制宜、因势利导,只有最合适的,没有什么叫对的,什么叫错的;最忌讳的就是完美主义倾向,凡事都要寻找标准答案和最优答案,既耽误了项…

【欢迎您的到来】这里是开源库get_local_info作者的付费专栏

您好, 我是带剑书生,开源库get_local_info的作者,欢迎您的到来,这里是我的付费专栏,会用更简洁的语言,更通俗的话语,来帮助您更好的学习rust,这里不仅仅讲解Rust在某些应用功能实现上…

Java项目:121SSM记账管理系统

博主主页:Java旅途 简介:分享计算机知识、学习路线、系统源码及教程 文末获取源码 一、项目介绍 记账管理系统基于SpringSpringMVCMybatis开发,系统主要功能如下: 收入项管理 支出项管理 收入方式管理 支出方式管理 添加收入…

企业网盘的价值:为什么企业需要它?

企业网盘因其主打的文件管理协作功能,正好符合信息时代高速发展下企业的需要,能够帮助企业集中管理文件数据,提供便捷的文件协作服务,一跃成为近两年企业服务类产品榜单中的一匹黑马。 企业网盘真的这么好用吗?企业真…

Cleanmymac for mac 4.14.7无弹窗注册版

Cleanmymac for mac是一款先进的、集所有功能于一身的实用系统清理工具,删除系统缓存文件 , 多余的应用程序语言包 , 它能帮助保持您的Mac保持清洁。只需两个简单的点击,就可以删除无用的文件,以节省您宝贵的磁盘空间。 对于很多喜爱摄影朋友…

51-14 Retentive Network,RetNet 多尺度保留机制序列建模论文精读

咱们今天来看的论文叫RetNet,题目是Retentive Network:a successor to transformer for large language models。我们知道BLIP成了一个非常普适的一个工具,你可以拿这个模型去训练VLMo,训练CoCa,训练BEiT-3&#xff0c…

如何实现指定列值排序? ------ MySQL中的field()函数 [让排序更简单]

想自定义排序规则就用field() filed(“列名”,“值1”,“值2”…) 案例:要求 STATUS 列 按 N,Y,E, 排序。 select * from 表名 ORDER BY field(STATUS,N,"Y","E") 效果…

H5小游戏如何提升APP变现收益?

在当前用户规模稳定但变现压力增加的背景下,开发者需要挖掘用户价值,提高营收,这成为开发者关注的重点话题。对于那些“用户用完即走”的APP产品来说,接入H5游戏能够吸引停留,为其带来收入上的增长。 一、什么是H5游戏…

班主任在班级管理中的角色定位

你是否曾经想过,为什么有的班主任能够让学生如此敬爱,而有的班主任却让学生敬而远之?其实,这都与班主任在班级管理中的角色定位有关。 班主任应该是学生的良师益友。这意味着班主任不仅要传授知识,更要关心学生的成长…

7. UE5 RPG修改GAS的Attribute的值

前面几节文章介绍了如何在角色身上添加AbilitySystemComponent和AttributeSet。并且还实现了给AttributeSet添加自定义属性。接下来,实现一下如何去修改角色身上的Attribute的值。 实现拾取药瓶回血功能 首先创建一个继承于Actor的c类,actor是可以放置到…

Java爬虫爬取图片壁纸

Java爬虫 以sougou图片为例:https://pic.sogou.com/ JDK17、SpringBoot3.2.X、hutool5.8.24实现Java爬虫,爬取页面图片 项目介绍 开发工具:IDEA2023.2.5 JDK:Java17 SpringBoot:3.2.x 通过 SpringBoot 快速构建开发环境…