单点登录系统

单点登录系统保存了用户的登录名和密码,上网用户在单点登录系统中认证成功后,就可以直接登录各个业务系统。

1. 用户使用单点登录系统的登录界面,输入用户名和密码登录成功后,

单点登录系统为用户浏览器安装一个cookie,cookie的值是一个全局唯

一的字符串 (下文称为ticket),理论上这个唯一值永远不能重复,用来

标识用户成功的登录请求。同一个用户,在同一个时刻登录两次,得到的

ticket值 应该完全不同。2. 用户访问业务系统时,如果当前用户已经在业务系统中登录,那么访问

业务系统的cookie中,会携带单点登录ticket,业务系统根据此ticket,去

单点登录系统中查询用户是否在线,如果在,就允许继续访问,否则就执行

注销操作3. 用户在任意一个业务系统中执行注销操作时,业务系统在拦截注销操作,

并且与单点登录系统联动,在单点登录系统中完成注销后,再跳转回业务系

统的注销界面

优点

1. 单点登录系统的整套拦截和转发流程,可以封装成为公共组件,代码修改量少2. 所有业务系统都可以使用上述方案增加与单点登录系统的联动功能

缺点

上述单点登录功能,依赖浏览器的cookie功能,如果浏览器不支持cookie,将无法使用

关于这个方案的安全性问题,可以通过定期更新ticket值,或每次访问都生成不同的ticket值来进行规避。

因为涉及对于单点登录系统的大量访问,所以会使得单点登录系统成为瓶颈,我们项目中采用性能更高的网络协议,

例如UDP协议进行在线状态交互,因为UDP报文头部较小,报文有效内容比例大,同时报文长度短,比现有的HTTP协议性能高2个数量级,每秒支撑1000次查询请求,是没有问题的.

我们使用了JWT来做用户的状态保持机制和数据认证

因为JWT的token是保存在浏览器端的,不影响服务器开销,

多台服务器也可以使用,不需要多次登录,会保存在浏览器一

个空间里,这个空间加密性比cookie强,即使cookie被截获,

也不会泄露用户信息,比较安全.

JWT一般会采用消息认证机制:在哈希算法基础上混入秘钥,

防止哈希算法被破解, 避免签名被伪造,效率比较高.

JWT白名单

在用户完成修改密码操作时. 将该用户加入到白名单中,

先根据用户身份的唯一标识判断用户是否在白名单中,如

果在,说明用户在token有效期内已经修改过一次密码, 现

在就需要先删除用户白名单中的token数据,用户修改完密

码后, 需要让用户重新进行登录生成新的access_token返

回给客户端,调用生成token的工具生成access_token(访

问token)的数据,判断用户是否有对应的白名单,如果有则将

该token值存入到redis数据库的白名单中.

当用户登录成功后,再进行用户认证,在验证token成功后,

对该用户的白名单进行验证,判断该用户是否在白名单中,

如果在,则验证token是否在白名单中,如果在则允许用户访问,

如果不在则不允许用户访问, 返回错误

JWT黑名单

关于登录状态信息续签的问题。比如设置token的有效期为一个小时,

那么一个小时后,如果用户仍然在这个web应用上,这个时候当然不

能指望用户再登录一次。所以我们在每次用户发出请求的时候都返回

一个新的token,前端再用这个新的token来替代旧的,这样每一次请

求都会刷新token的有效期。但是这样,需要频繁的生成token。另外

一种方案是使用Js来动态续签。判断还有多久这个token会过期,在

token快要过期时,返回一个新的token。

用户主动注销,后台无法让用户强制下线。JWT并不支持用户主动退

出登录,当然,可以在客户端删除这个token,但在别处使用的token

仍然可以正常访问。为了支持注销和后台主动强制让用户下线, 我们在

项目中的方案是在注销时将该token加入黑名单。当用户发出请求后,

如果该token在黑名单中,则阻止用户的后续操作,返回Invalid token

错误。对于名单的维护可以使用redis,token的过期时间和redis中数

据的存活时间保持一致。

python白名单验证-JWT黑名单和白名单相关推荐

  1. JWT黑名单和白名单

    单点登录系统 单点登录系统保存了用户的登录名和密码,上网用户在单点登录系统中认证成功后,就可以直接登录各个业务系统. 1. 用户使用单点登录系统的登录界面,输入用户名和密码登录成功后, 单点登录系统为 ...

  2. 网络安全笔记--文件上传1(文件上传基础、常见后端验证、黑名单、白名单、后端绕过方式)

    1. 基础 1.1 初识文件上传漏洞 文件上传漏洞是一种非常严重的漏洞,如果Web没有对用户上传的文件进行有效地过滤,若有不法分子上传恶意脚本,就有可能获取执行服务端命令的能力,严重影响服务器安全. ...

  3. 虚拟服务器添加用户白名单,apache配置黑名单和白名单及账户权限控制

    apache配置黑名单和白名单的两个方法 为项目需要,部署之后客户需要实现白名单功能.以前一般使用iis服务器或者是网上的DZ或CP面板,而且也仅仅操作过黑名单.百度搜索,基本都是黑名单的操作方法,本 ...

  4. python白名单验证是什么意思_JWT黑名单和白名单

    单点登录系统 单点登录系统保存了用户的登录名和密码,上网用户在单点登录系统中认证成功后,就可以直接登录各个业务系统. 1. 用户使用单点登录系统的登录界面,输入用户名和密码登录成功后, 单点登录系统为 ...

  5. 进行模拟点击的时候,利用python完成黑名单和白名单(判断字符串是否包含)

    在做项目的时候,遇到一个需求,就是在进行模拟点击的时候,要求加上一个黑名单和白名单 意思就是: 白名单:模拟点击的时候,不能点击白名单里面有的元素,例如:包含什么地址,或者什么数字和特殊的字符串的时候 ...

  6. 自动分析黑名单及白名单的iptables脚本

    http://www.txwb.com/Article/serverHelp/gl/201005/70574.html  自动分析黑名单及白名单的iptables脚本 本文介绍的是一个自动分析黑名单和 ...

  7. 布隆过滤器黑名单+白名单实现ip黑名单问题

    1.已知布隆过滤有误判概率 因为hash运算后存在"假阳性",因此做黑名单时可能把正常用户给拦截了 做白名单时一定是准确无误的 2.黑白名单组合解决:ip黑名单问题 直接列下我的设 ...

  8. Android之monkey Test,Monkey测试中的黑名单和白名单,Monkey测试中的黑名单和白名单

    一.Monkey简介 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行 ...

  9. 如何为ASP.NET Core设置客户端IP白名单验证

    本篇博文中展示了如何在ASP.NET Core应用程序中设置IP白名单验证的3种方式. 你可以使用一下3种方式: 使用中间件检查每个请求的远程IP地址 使用Action过滤器为指定的Controlle ...

最新文章

  1. mysql5.6.46安装教程_鲲鹏云-arm平台 mysql-5.6.46 安装
  2. python从入门到精通书-Python从入门到精通
  3. linux 32bit swt,无法在Windows 32位上加载SWT库
  4. 全屏的三栏div+css布局示例
  5. 计算机组成原理中wr是什么,计算机组成原理复习例题.doc
  6. java中日历类:Calendar
  7. 网络运维经验分享01
  8. 第一章 计算流体力学动力学基础知识
  9. mybatis整合Redis和ehcache实现二级缓存
  10. 飞机大战python_飞机大战python
  11. 为什么手机显示itunes store无法连接服务器,iPad无法连接到iTunes Store怎么办?教你几招...
  12. C#中TransactionScope的使用小结
  13. Steam游戏—底特律:化身成人,回家章节中女主角上二楼打扫卫生,按L Shift开窗按不动怎么办
  14. 谷歌地球的高清卫星影像数据都来源自哪里?用户如何下载谷歌影像?
  15. 双十一第二波活动来了,酷客scrm助力商家大卖
  16. 那些酷炫的深度学习网络图怎么画出来的?
  17. 面向对象案例——贪吃蛇游戏
  18. android app防止锁屏_如何控制Android不锁屏
  19. 游戏图形测试软件,今日共有3款免费测试网络游戏(组图)
  20. 元宇宙直播,不再是概念

热门文章

  1. WriteStrToReg() ReadStrFormReg()
  2. windows 文件关联图标的设置方法 (附部分代码)
  3. 深圳.Net俱乐部2.26活动资源下载之——从SmartClient到ClickOnce
  4. node 之 ... 扩展运算符报错
  5. Kettle提高表输出写入速度(每秒万条记录)
  6. FreeRTOS的信号量和互斥量
  7. C# DropDownList 绑定枚举类
  8. opencv学习之路(25)、轮廓查找与绘制(四)——正外接矩形
  9. 【BZOJ4236】JOIOJI [DP]
  10. 【BZOJ】3036: 绿豆蛙的归宿