python白名单验证-JWT黑名单和白名单
单点登录系统
单点登录系统保存了用户的登录名和密码,上网用户在单点登录系统中认证成功后,就可以直接登录各个业务系统。
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黑名单和白名单相关推荐
- JWT黑名单和白名单
单点登录系统 单点登录系统保存了用户的登录名和密码,上网用户在单点登录系统中认证成功后,就可以直接登录各个业务系统. 1. 用户使用单点登录系统的登录界面,输入用户名和密码登录成功后, 单点登录系统为 ...
- 网络安全笔记--文件上传1(文件上传基础、常见后端验证、黑名单、白名单、后端绕过方式)
1. 基础 1.1 初识文件上传漏洞 文件上传漏洞是一种非常严重的漏洞,如果Web没有对用户上传的文件进行有效地过滤,若有不法分子上传恶意脚本,就有可能获取执行服务端命令的能力,严重影响服务器安全. ...
- 虚拟服务器添加用户白名单,apache配置黑名单和白名单及账户权限控制
apache配置黑名单和白名单的两个方法 为项目需要,部署之后客户需要实现白名单功能.以前一般使用iis服务器或者是网上的DZ或CP面板,而且也仅仅操作过黑名单.百度搜索,基本都是黑名单的操作方法,本 ...
- python白名单验证是什么意思_JWT黑名单和白名单
单点登录系统 单点登录系统保存了用户的登录名和密码,上网用户在单点登录系统中认证成功后,就可以直接登录各个业务系统. 1. 用户使用单点登录系统的登录界面,输入用户名和密码登录成功后, 单点登录系统为 ...
- 进行模拟点击的时候,利用python完成黑名单和白名单(判断字符串是否包含)
在做项目的时候,遇到一个需求,就是在进行模拟点击的时候,要求加上一个黑名单和白名单 意思就是: 白名单:模拟点击的时候,不能点击白名单里面有的元素,例如:包含什么地址,或者什么数字和特殊的字符串的时候 ...
- 自动分析黑名单及白名单的iptables脚本
http://www.txwb.com/Article/serverHelp/gl/201005/70574.html 自动分析黑名单及白名单的iptables脚本 本文介绍的是一个自动分析黑名单和 ...
- 布隆过滤器黑名单+白名单实现ip黑名单问题
1.已知布隆过滤有误判概率 因为hash运算后存在"假阳性",因此做黑名单时可能把正常用户给拦截了 做白名单时一定是准确无误的 2.黑白名单组合解决:ip黑名单问题 直接列下我的设 ...
- Android之monkey Test,Monkey测试中的黑名单和白名单,Monkey测试中的黑名单和白名单
一.Monkey简介 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行 ...
- 如何为ASP.NET Core设置客户端IP白名单验证
本篇博文中展示了如何在ASP.NET Core应用程序中设置IP白名单验证的3种方式. 你可以使用一下3种方式: 使用中间件检查每个请求的远程IP地址 使用Action过滤器为指定的Controlle ...
最新文章
- mysql5.6.46安装教程_鲲鹏云-arm平台 mysql-5.6.46 安装
- python从入门到精通书-Python从入门到精通
- linux 32bit swt,无法在Windows 32位上加载SWT库
- 全屏的三栏div+css布局示例
- 计算机组成原理中wr是什么,计算机组成原理复习例题.doc
- java中日历类:Calendar
- 网络运维经验分享01
- 第一章 计算流体力学动力学基础知识
- mybatis整合Redis和ehcache实现二级缓存
- 飞机大战python_飞机大战python
- 为什么手机显示itunes store无法连接服务器,iPad无法连接到iTunes Store怎么办?教你几招...
- C#中TransactionScope的使用小结
- Steam游戏—底特律:化身成人,回家章节中女主角上二楼打扫卫生,按L Shift开窗按不动怎么办
- 谷歌地球的高清卫星影像数据都来源自哪里?用户如何下载谷歌影像?
- 双十一第二波活动来了,酷客scrm助力商家大卖
- 那些酷炫的深度学习网络图怎么画出来的?
- 面向对象案例——贪吃蛇游戏
- android app防止锁屏_如何控制Android不锁屏
- 游戏图形测试软件,今日共有3款免费测试网络游戏(组图)
- 元宇宙直播,不再是概念
热门文章
- WriteStrToReg() ReadStrFormReg()
- windows 文件关联图标的设置方法 (附部分代码)
- 深圳.Net俱乐部2.26活动资源下载之——从SmartClient到ClickOnce
- node 之 ... 扩展运算符报错
- Kettle提高表输出写入速度(每秒万条记录)
- FreeRTOS的信号量和互斥量
- C# DropDownList 绑定枚举类
- opencv学习之路(25)、轮廓查找与绘制(四)——正外接矩形
- 【BZOJ4236】JOIOJI [DP]
- 【BZOJ】3036: 绿豆蛙的归宿