网易严选中的用户认证架构设计

(一)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相关推荐

  1. 一种全新的分布式用户认证架构设计

    2019独角兽企业重金招聘Python工程师标准>>> 前言 分布式用户认证, 有个简单的称谓就是单点登陆, 即一处登陆,到处通行. 说详细一点就是,集中的用户统一身份认证和分布的式 ...

  2. 北京大学肖臻老师《区块链技术与应用》公开课笔记8——BTC挖矿篇

    北京大学肖臻老师<区块链技术与应用>公开课笔记 比特币挖矿篇,对应肖老师视频:click here 全系列笔记请见:全系列笔记请见:click here About Me:点击进入我的Pe ...

  3. 北京大学肖臻老师《区块链技术与应用》公开课笔记15——ETH概述篇

    北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊概述篇,对应肖老师视频:click here 全系列笔记请见:click here About Me:点击进入我的Personal P ...

  4. 北京大学肖臻老师《区块链技术与应用》公开课笔记13——BTC匿名性篇2(零知识证明)

    北京大学肖臻老师<区块链技术与应用>公开课笔记 比特币回顾问答篇,对应肖老师视频:click here 全系列笔记请见:click here About Me:点击进入我的Personal ...

  5. 数据挖掘-理论与算法 公开课笔记

    数据挖掘-理论与算法 公开课笔记 制作:纪元 本提纲遵循CC-BY-NC-SA协议 (署名-非商业性-相同方式共享) 最近更新时间:2020年3月4日01:48:00 文章目录 10.2.1.1 Da ...

  6. Coursera公开课笔记: 斯坦福大学机器学习第十一课“机器学习系统设计(Machine learning system design)”

    Coursera公开课笔记: 斯坦福大学机器学习第十一课"机器学习系统设计(Machine learning system design)" 斯坦福大学机器学习斯坦福大学机器学习第 ...

  7. Coursera公开课笔记: 斯坦福大学机器学习第一课“引言(Introduction)”

    Coursera公开课笔记: 斯坦福大学机器学习第一课"引言(Introduction)" 注:这是我在"我爱公开课"上做的学习笔记,会在52opencours ...

  8. 北京大学肖臻老师《区块链技术与应用》公开课笔记23——ETH挖矿难度调整篇

    北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊挖矿难度调整,对应肖老师视频:click here 全系列笔记请见:click here About Me:点击进入我的Persona ...

  9. 北京大学肖臻老师《区块链技术与应用》公开课笔记25——ETH智能合约篇1

    北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊智能合约,对应肖老师视频:click here 全系列笔记请见:click here 智能合约是以太坊的精髓所在,也是其与比特币系统最 ...

最新文章

  1. Python的range()函数
  2. linux tomcat下部署多个项目启动失败
  3. C++中的逻辑操作符重载
  4. mysql一直拒绝登录_mysql 登录错误:1045 (28000)访问被拒问题
  5. Delta3d角色注册机制
  6. 大学计算机专业的实验室图片,清华大学计算机系人工智能实验室.PDF
  7. 不用找,你想要的家具贴图素材都在这里
  8. 2022Adobe全套资源|PS PR AE
  9. flash乱码解决方案
  10. 浏览器播放视频时蓝牙耳机自动关机
  11. 在火狐浏览器打开xpath_元素定位工具:火狐浏览器Try Xpath插件
  12. 哪种程序员最挣钱?平均月薪30.8K,网友说这是掌握世界的技术
  13. 程序员口中常说的“组件”是什么?简洁易懂
  14. 2020美国大学计算机博士专业排名,美国大学计算机系统专业排名2020年
  15. apollo配置中心
  16. 推荐10个Vue 3.0开发的开源前端项目
  17. 手把手教你,5min中,实现OBS存储桶,搭建个人网盘(秒杀百度网盘VIP)
  18. c语言如何让系统随机生成数,C语言中是如何进行随机数生成的
  19. 关于AD转换设计中的基本问题
  20. 手写ioc和aop容器

热门文章

  1. Vue之webpack之基本使用
  2. C#之ActionBlock异步关闭死锁
  3. 最长公共前缀 python_python 实现求解字符串集的最长公共前缀方法
  4. python多线程_Python多线程和队列结合demo
  5. Java基础教程【第九章:异常处理】
  6. mysql navicat 多语句_使用Navicat多对多关系SQL语句在MySQL中实现
  7. 14c语言合并两个字符串,C语言的标识符和字符数据、字符串数据.ppt
  8. linux 2.6内核进程调度,linux2.6内核进程调度
  9. python1e2_Python必修基础(1)
  10. python训练模型函数参数_keras读取训练好的模型参数并把参数赋值给其它模型详解...