由Session到Token的身份验证演变过程理解Session、Cookie、Token
本文将从Web应用 由传统身份验证到基于Token的身份验证的演变过程的角度,介绍Session、Cookie、Token。
很久以前,Web应用基本用作文档的浏览,如网络黄页。既然仅仅是浏览,因此服务器不需要记录具体用户在某一段时间里都浏览了哪些文档,每次请求都是一个新的HTTP协议,对服务器来说都是全新的。
基于Session的身份验证
随着交互式Web应用的兴起,比如,购物等需要登录的网站。引出了一个新的问题,那就是要记录哪些用户登录了系统进行了哪些操作,即要管理会话(什么是会话?简单的讲如果用户需要登录,那么就可以简单的理解为会话,如果不需要登录,那么就是简单的连接。),比如,不同用户将不同商品加入到购物车中,也就是说必须把每个用户区分开。因为HTTP请求是无状态的,所以想出了一个办法,那就是给每个用户配发一个会话标识(Sessionid),简单的讲就是一个既不会重复,又不容易被找到规律以仿造的随机字符串,使得每个用户的收到的会话标识都不一样,每次用户从客户端向服务端发起HTTP请求的时候,把这个字符串给一并发送过来,这样服务端就能区分开谁是谁了,至于客户端(浏览器)如何保存这个“身份标识”,一般默认采用Cookie 的方式,这个会话标识(Sessionid)会存在客户端的Cookie中。
虽然这样解决了区分用户的问题,但又引发了一个新的问题,那就是每个用户(客户端)只需要保存自己的会话标识(Sessionid),而服务端则要保存所有用户的会话标识(Sessionid)。 如果访问服务端的用户逐渐变多,就需要保存成千上万,甚至几千万个,这对服务器说是一个难以接受的开销 。 再比如,服务端是由2台服务器组成的一个集群,小明通过服务器A登录了系统,那session id会保存在服务器A上, 假设小明的下一次请求被转发到服务器B怎么办? 服务器B可没有小明 的 sessionid。
可能会有人讲,如果使小明登录时,始终在服务器A上进行登录(stickysession),岂不解决了这个问题?那如果服务器A挂掉怎么办呢?还是会将小明的请求转发到服务器B上。
如此一来,那只能做集群间的 session 复制共享了, 就是把 sessionid在两个机器之间进行复制,如下图,但这对服务器的性能和内存提出了巨大的挑战。
因此,又想到如果将所有用户的Session集中存储呢,也就想到了缓存服务Memcached——由于Memcached是分布式的内存对象缓存系统,因此可以用来实现 Session 同步。把session id 集中存储到一台服务器上,所有的服务器都来访问这个地方的数据,如此就避免了复制的方式, 但是这种“集万千宠爱于一身”使得又出现了单点故障的可能, 就是说这个负责存储 session的服务器挂了,所有用户都得重新登录一遍, 这是用户难以接受的。
那么索性存储Session的服务器也搞成集群,增加其可靠性,避免单点故障,但不管如何,Session 引发出来的问题层出不穷。
于是有人就在思考, 为什么服务端必须要保存这session呢, 只让每个客户端去保存不行吗?可是服务端如果不保存这些sessionid,又将如何验证客户端发送的 session id 的确是服务端生成的呢? 如果不验证,服务端无法判断是否是合法登录的用户,对,这里的问题是验证,session只是解决这个验证问题的而产生的一个解决方案,是否还有其它方案呢?
基于Token 的身份验证
例如, 小明已经登录了系统,服务端给他发一个令牌(Token), 里边包含了小明的 user id, 后续小明再次通过 Http请求访问服务器的时候,把这个 Token 通过 Http header 带过来不就可以了。
服务端需要验证 Token是自己生成的,而非伪造的。假如不验证任何人都可以伪造,那么这个令牌(token)和sessionid没有本质区别,如何让别人伪造不了?那就对数据做一个签名(Sign)吧, 比如说服务端用 HMAC-SHA256加密算法,再加上一个只有服务端才知道的密钥,对数据做一个签名, 把这个签名和数据一起作为 Token 发给客户端, 客户端收到 Token以后可以把它存储起来,比如存储在 Cookie 里或者Local Storage 中,由于密钥除了服务端任何其他用户都不知道,就无法伪造令牌(Token)。
如此一来,服务端就不需要保存 Token 了, 当小明把这个Token发给服务端时,服务端使用相同的HMAC-SHA256算法和相同的密钥,对数据再计算一次签名, 和 Token 中的签名做个对比, 如果相同,说明小明已经登录过了,即验证成功。若不相同,那么说明这个请求是伪造的。
这样一来, 服务端只需要生成 Token,而不需要保存Token, 只是验证Token就好了,也就实现了时间换取空间(CPU计算时间换取session存储空间)。没了session id 的限制, 当用户访问量增大,直接加机器就可以轻松地做水平扩展,也极大的提高了可扩展性。
推荐系统
电脑公司Ghost Win8.1 x32 精选纯净版2022年7月(免激活) ISO镜像高速下载
语言:中文版系统大小:2.98GB系统类型:Win8电脑公司Ghost Win8.1x32位纯净版V2022年7月版本集成了自2022流行的各种硬件驱动,首次进入系统即全部硬件已安装完毕。电脑公司Ghost Win8.1x32位纯净版具有更安全、更稳定、更人性化等特点。集成最常用的装机软件,精心挑选的系统维护工具,加上绿茶独有
微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载
语言:中文版系统大小:5.13GB系统类型:Win11微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。Win11 64位 Office办公版(免费)优化 1、保留 Edge浏览器。 2、隐藏“操作中心”托盘图标。 3、保留常用组件(微软商店,计算器,图片查看器等)。 5、关闭天气资讯。
Win11 21H2 官方正式版下载_Win11 21H2最新系统免激活下载
语言:中文版系统大小:4.75GB系统类型:Win11Ghost Win11 21H2是微软在系统方面技术积累雄厚深耕多年,Ghost Win11 21H2系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。Ghost Win11 21H2是微软最新发布的KB5019961补丁升级而来的最新版的21H2系统,以Windows 11 21H2 22000 1219 专业版为基础进行优化,保持原汁原味,系统流畅稳定,保留常用组件
windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载
语言:中文版系统大小:5.31GB系统类型:Win11windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载,微软win11发布快大半年了,其中做了很多次补丁和修复一些BUG,比之前的版本有一些功能上的调整,目前已经升级到最新版本的镜像系统,并且优化了自动激活,永久使用。windows11中文版镜像国内镜像下载地址微软windows11正式版镜像 介绍:1、对函数算法进行了一定程度的简化和优化
微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载
语言:中文版系统大小:5.31GB系统类型:Win11微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载,微软2022年正式推出了win11系统,很多人迫不及待的要体验,本站提供了最新版的微软Windows11正式版系统下载,微软windows11正式版镜像 是一款功能超级强大的装机系统,是微软方面全新推出的装机系统,这款系统可以通过pe直接的完成安装,对此系统感兴趣,想要使用的用户们就快来下载
微软windows11系统下载 微软原版 Ghost win11 X64 正式版ISO镜像文件
语言:中文版系统大小:0MB系统类型:Win11微软Ghost win11 正式版镜像文件是一款由微软方面推出的优秀全新装机系统,这款系统的新功能非常多,用户们能够在这里体验到最富有人性化的设计等,且全新的柔软界面,看起来非常的舒服~微软Ghost win11 正式版镜像文件介绍:1、与各种硬件设备兼容。 更好地完成用户安装并有效地使用。2、稳定使用蓝屏,系统不再兼容,更能享受无缝的系统服务。3、为
雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载
语言:中文版系统大小:4.75GB系统类型:雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载在系统方面技术积累雄厚深耕多年,打造了国内重装系统行业的雨林木风品牌,其系统口碑得到许多人认可,积累了广大的用户群体,雨林木风是一款稳定流畅的系统,一直以来都以用户为中心,是由雨林木风团队推出的Windows11国内镜像版,基于国内用户的习惯,做了系统性能的优化,采用了新的系统
雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO
语言:中文版系统大小:5.91GB系统类型:Win7雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO在系统方面技术积累雄厚深耕多年,加固了系统安全策略,雨林木风win7旗舰版系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。win7 32位旗舰装机版 v2019 05能够帮助用户们进行系统的一键安装、快速装机等,系统中的内容全面,能够为广大用户
相关文章
- 数据泄露对企业员工造成的影响
- 怎样连接网络打印机解决方法
- win10自带wifi共享怎么开启 Win10设置无线网络共享方法图文教程
- 压缩文件打开是乱码的解决办法
- win10添加网络打印机,小编教你win10添加网络打印机的方法
- 专栏
- 被打击得一塌糊涂的安全圈,怎么利用“AI”开启外挂模式?
- 如何养成安全的上网习惯
- 可穿戴从业者必读:2014华米踩过的那些坑
- Remote Mouse App 6个0 day漏洞,1000万用户受影响
- 网络安全:开启千亿蓝海市场
- 网络监控系统简介、流程及架构和方案设计
- 电脑QQ与其他软件热键冲突如何处理?
- IPv6是什么?电脑中IPv6网络的用途
- CSS 世界头号黑客来京啦,宅客有免费门票!
- 实例讲解Cookies欺骗与session欺骗入侵
- 个人金融信息漫游指南:《个人金融信息保护技术规范》解读
- 瑞士年轻黑客入侵15万个摄像头 或将入狱20年
热门系统
- 1华硕笔记本&台式机专用系统 GhostWin7 32位正式旗舰版2018年8月(32位)ISO镜像下载
- 2深度技术 Windows 10 x86 企业版 电脑城装机版2018年10月(32位) ISO镜像免费下载
- 3电脑公司 装机专用系统Windows10 x86喜迎国庆 企业版2020年10月(32位) ISO镜像快速下载
- 4深度技术 Windows 10 x86 企业版 六一节 电脑城装机版 版本1903 2022年6月(32位) ISO镜像免费下载
- 5雨林木风 Ghost Win7 SP1 装机版 2020年4月(32位) 提供下载
- 6深度技术 Windows 10 x64 企业版 电脑城装机版2021年1月(64位) 高速下载
- 7新萝卜家园电脑城专用系统 Windows10 x64 企业版2019年10月(64位) ISO镜像免费下载
- 8新萝卜家园 GhostWin7 SP1 最新电脑城极速装机版2018年8月(32位)ISO镜像下载
- 9电脑公司Ghost Win8.1 x32 精选纯净版2022年5月(免激活) ISO镜像高速下载
- 10新萝卜家园Ghost Win8.1 X32 最新纯净版2018年05(自动激活) ISO镜像免费下载
热门文章
常用系统
- 1深度技术Ghost Win10 万能装机专业版x64 v2023.01免费最新版下载
- 2番茄花园Ghost Win7 x64 SP1稳定装机版2020年11月(64位) 高速下载
- 3系统之家Ghost win7 完整旗舰版64位 v2020免费最新下载
- 4电脑公司Win7特别版IOS镜像文件下载_电脑公司 Ghost Win7 32位 稳定旗舰版下载
- 5Win10 20H2 19042.1466 稳定版下载_Win10 20H2 19042.1466(KB5009543)最新正式版下载
- 6番茄花园 GHOST WIN7 SP1 X86 正式免激活版 V2023.08 (32位) 下载
- 7新雨林木风 Windows10 x86 企业装机版2022年5月(32位) ISO镜像高速下载
- 8雨林木风 WINDOWS10 64位国庆特别版 V2020.10 下载
- 9电脑公司 GHOST WIN7 SP1 X64 装机特别版 V2018.09(64位) 下载
- 10风林火山Win7旗舰版系统下载_风林火山Win7 64位极速安全版下载V2023.04