单点登录系统

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

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. python白名单验证是什么意思_第10.5节 使用__all__定义Python模块导入白名单

    一.引言 <第10.4节 Python模块的弱封装机制>介绍了Python模块的的弱封装机制,除了使用弱封装机制来从一定程度上防止导入特定成员外,Python模块中还提供可另外一种类似白名 ...

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

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

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

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

  4. java ip 白名单_Java代码中对IP进行白名单验证

    public classipUtil {//IP的正则,这个正则不能验证第一组数字为0的情况//private static Pattern pattern = Pattern//.compile(& ...

  5. 【区块链 | Merkle】使用Merkle Tree空投,白名单验证

    Merkle Tree在高效验证数据的同时减少了链上计算和存储,因为非常适合基于区块链的白名单验证,空投,IDO等需要验证数据的业务. Merkle Tree介绍 默克尔树,在区块链出现前,曾广泛用于 ...

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

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

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

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

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

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

  9. python使用正则表达式验证邮箱地址语法有效性

    python使用正则表达式验证邮箱地址语法有效性 #python使用正则表达式验证邮箱地址语法有效性 import re # mail regular expression formula# rege ...

最新文章

  1. spring (由Rod Johnson创建的一个开源框架)
  2. 你在中国有去过那些地区?
  3. 在线音乐用户寄望用爱发电,资本不愿无米之炊
  4. Matlab神经网络十讲(2): Create Configuration Train NeuralNet
  5. mysql 实现 rowid
  6. 电脑软件:推荐5款实用的效率软件,每一款都爱不释手!
  7. 浮点加法器计算机组成原理,计算机组成原理 第二章运算方法与运算器
  8. Matlab滤波器的verilog实现,FIR滤波器的Verilog实现
  9. 1.携程架构实践 --- 携程整体技术架构
  10. 玉石直播招商团队薪酬绩效方案
  11. Android 开发即时聊天工具 YQ 《更新》(源码下载)
  12. Easy EDA:在线创客软件服务是未来的趋势 | 雷锋网
  13. 第六天 游戏策划学习
  14. AppCan学习笔记
  15. 《Cocos Creator游戏实战》实现微信小游戏排行榜
  16. U盘在别人电脑上正常显示,插在自己电脑读不出来(只显示CD驱动器)
  17. 【冬察冬见】FFmpeg系列学习笔记
  18. 什么是RS485总线?怎么使用RS485总线?一文了解清楚
  19. [advGAN]Generating Adversarial Examples With Adversarial Networks
  20. visual studio 错误:在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include StdAfx.h”?

热门文章

  1. 一个大牛的acm历程(很棒 优秀的人真的很多)
  2. 收藏!闲鱼卖货实操,小白轻松入门
  3. 牛客网C语言编程初学者入门训练135题
  4. 推荐截图小软件--红蜻蜓抓图精灵
  5. 反欺诈之路——黑卡、养卡的识别
  6. MySQL 员工信息查询
  7. 【UFUN开发板评测】小巧而不失精致,简单而不失内涵——uFun开发板开箱爆照...
  8. 小程序生成二维码海报
  9. python实现第三方验证码获取_python利用第三方模块,发送短信验证码(测试案例)...
  10. 用Python去除图像的黑色或白色背景