网易用户认证架构设计 | session token | 公开课笔记-01
网易严选中的用户认证架构设计
(一)Session本质及限制分析
1.背景
- 目前是Web2.0交互式网络时代
- HTTP:传输HTML(一种超文本标记语言,侧重静态,不随请求变化而变化),所以HTTP天生缺陷“无状态”,多次请求无关联性,无法请求复用
2.Session+Cookie
- 为实现请求复用,通过二者实现伪有状态
- 业务:转账(登录+转账)
3.本质
- session:服务端对象是Map<userKey,userInfo>,存储在服务端
- Context:也是个Map<sessionId,sessionObj>,用来存储Session
- cookie:也是个Map<JsessionID,sessionID>,客户端存储session的id,下次请求带此id,服务器检索匹配对应session,实现复用
4.限制
- Session之所以基本不再使用,主要还是会侵占服务器的资源(内存),并且管理起来比较复杂
(二)网易严选的URS系统设计实现
积极拥抱无状态,Token,令牌,雷同于各位的身份证。
流程:客户端[携带uName,pWord]申请网站地址,网站[携带uName,pWord]去auth-service申请,通过如此间接的,客户端获得token并存储。
其中,auth-service不具备私密信息,而是通过crm系统来校验生成token。
token是字符串,承载基本信息[不含私密信息],特征“不能随意被伪造”,通过加密保证,其中加密算法重点是“密钥填充”
密钥这里涉及“预解析”,为实现预解析,让子系统也持有auth-service的密钥,通过“.dll 和 auth-key”,子系统[携带:服务 组织 公开域名地址]申请接入后能获得相同密钥并且定期更新
生产环境中无状态使用的注意事项
token有效性处理
- 定长器token:token不可变,但是在token中加入了expire过期时间,时间以周为单位
- 普通token:其中包含了过期时间,到期后,或者没有到期可能需要续期。伴随请求进而重新生成token,覆盖之前的token
- 常见问题,就是token在过期时间之内其实会有很多可用token,如何避免?
例如:加入设备识别、缓存工具。
还可以使用相对便捷的方式做简单处理,此种处理,需要引入redis等暂存工具。 登录时,把用户名作为redis的key,token的唯一标识作为redis的value,过期时间比如设置30min,今
后不论用户重新登录了多少次,用户的redis对应的token只有一个,且是最后一个。
TTL:time to live
网易用户认证架构设计 | session token | 公开课笔记-01相关推荐
- 一种全新的分布式用户认证架构设计
2019独角兽企业重金招聘Python工程师标准>>> 前言 分布式用户认证, 有个简单的称谓就是单点登陆, 即一处登陆,到处通行. 说详细一点就是,集中的用户统一身份认证和分布的式 ...
- 北京大学肖臻老师《区块链技术与应用》公开课笔记8——BTC挖矿篇
北京大学肖臻老师<区块链技术与应用>公开课笔记 比特币挖矿篇,对应肖老师视频:click here 全系列笔记请见:全系列笔记请见:click here About Me:点击进入我的Pe ...
- 北京大学肖臻老师《区块链技术与应用》公开课笔记15——ETH概述篇
北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊概述篇,对应肖老师视频:click here 全系列笔记请见:click here About Me:点击进入我的Personal P ...
- 北京大学肖臻老师《区块链技术与应用》公开课笔记13——BTC匿名性篇2(零知识证明)
北京大学肖臻老师<区块链技术与应用>公开课笔记 比特币回顾问答篇,对应肖老师视频:click here 全系列笔记请见:click here About Me:点击进入我的Personal ...
- 数据挖掘-理论与算法 公开课笔记
数据挖掘-理论与算法 公开课笔记 制作:纪元 本提纲遵循CC-BY-NC-SA协议 (署名-非商业性-相同方式共享) 最近更新时间:2020年3月4日01:48:00 文章目录 10.2.1.1 Da ...
- Coursera公开课笔记: 斯坦福大学机器学习第十一课“机器学习系统设计(Machine learning system design)”
Coursera公开课笔记: 斯坦福大学机器学习第十一课"机器学习系统设计(Machine learning system design)" 斯坦福大学机器学习斯坦福大学机器学习第 ...
- Coursera公开课笔记: 斯坦福大学机器学习第一课“引言(Introduction)”
Coursera公开课笔记: 斯坦福大学机器学习第一课"引言(Introduction)" 注:这是我在"我爱公开课"上做的学习笔记,会在52opencours ...
- 北京大学肖臻老师《区块链技术与应用》公开课笔记23——ETH挖矿难度调整篇
北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊挖矿难度调整,对应肖老师视频:click here 全系列笔记请见:click here About Me:点击进入我的Persona ...
- 北京大学肖臻老师《区块链技术与应用》公开课笔记25——ETH智能合约篇1
北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊智能合约,对应肖老师视频:click here 全系列笔记请见:click here 智能合约是以太坊的精髓所在,也是其与比特币系统最 ...
最新文章
- Python的range()函数
- linux tomcat下部署多个项目启动失败
- C++中的逻辑操作符重载
- mysql一直拒绝登录_mysql 登录错误:1045 (28000)访问被拒问题
- Delta3d角色注册机制
- 大学计算机专业的实验室图片,清华大学计算机系人工智能实验室.PDF
- 不用找,你想要的家具贴图素材都在这里
- 2022Adobe全套资源|PS PR AE
- flash乱码解决方案
- 浏览器播放视频时蓝牙耳机自动关机
- 在火狐浏览器打开xpath_元素定位工具:火狐浏览器Try Xpath插件
- 哪种程序员最挣钱?平均月薪30.8K,网友说这是掌握世界的技术
- 程序员口中常说的“组件”是什么?简洁易懂
- 2020美国大学计算机博士专业排名,美国大学计算机系统专业排名2020年
- apollo配置中心
- 推荐10个Vue 3.0开发的开源前端项目
- 手把手教你,5min中,实现OBS存储桶,搭建个人网盘(秒杀百度网盘VIP)
- c语言如何让系统随机生成数,C语言中是如何进行随机数生成的
- 关于AD转换设计中的基本问题
- 手写ioc和aop容器
热门文章
- Vue之webpack之基本使用
- C#之ActionBlock异步关闭死锁
- 最长公共前缀 python_python 实现求解字符串集的最长公共前缀方法
- python多线程_Python多线程和队列结合demo
- Java基础教程【第九章:异常处理】
- mysql navicat 多语句_使用Navicat多对多关系SQL语句在MySQL中实现
- 14c语言合并两个字符串,C语言的标识符和字符数据、字符串数据.ppt
- linux 2.6内核进程调度,linux2.6内核进程调度
- python1e2_Python必修基础(1)
- python训练模型函数参数_keras读取训练好的模型参数并把参数赋值给其它模型详解...