文档章节

SSO:JWT安全认证的应用问题

wiitht
 wiitht
发布于 2017/07/25 19:35
字数 836
阅读 140
收藏 1
点赞 0
评论 0

    Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。   

    基于JWT安全认证机制来实现SSO登录;在这个过程中对于SSO的基础实现我们采用一台单独的SSO服务器来进行登录验证,一旦有某一台服务器登录后SSO服务器自然会有验证记录,其他域名下的服务器只需要和SSO服务器校验便可以知道用户是否登录(通过跨域实现),整体机制是构建与cookie之上。

    JWT在SSO过程中起到了一种无状态传输的效果,我们只关心请求中所附加的token,通过token进行鉴权从而确认请求的合法性;这样的话整个实现不在立足于session,至于token的存储在前端是通过cookie或者localstorage实现我们并不关心。

    1.基于shiro机制实现的方案尤其要注意以下几点:

    1)多机器情况下,每台机器都用shiro控制,shiro的登录依赖自己的session,如果每台机器都产生自己的sessionid会导致同一域名下cookie存在大量的不同的sessionid;其次sessionid对于每次请求浏览器都会附加都请求cookie中,使得不同机器对sessionid的识别会出现模糊不清,导致登录不稳定!

    2)SSO登录的解决方案有几种,如:共享cookie,共享session;我们是基于共享用户信息的cookie,传递JWT的形式来解决SSO登录的问题,所以去掉对session的依赖,以及不同域名下的token保证不一致各自维护自己的token,并且cookie中token通过域名,path等等做好限制;

    3)SSO机制采用无状态原理(JWT原理) 

    这几点意味着每次请求在shiro中都需要进行shiro内部的登录(subject.login方法调用),实际测试来看shiro过滤器里面进行登录速度是非常快的,所以几乎不受什么影响。

    shiro无状态登录参考

    2.JWT登录实现要注意的问题:
    1)jwt的续签和注销 

    ~ 注销登录通过redis来解决

    ~ 统一通过redis设置的过期时间来管理用户登录的key,这个key一旦过期自动将用户重定向到登录页

    2) token的过期时间问题  

    JWT对于传统的方式需要管理session,cookie比较麻烦,同时安全性上做的不是很好提供了一些比较好的处理方案,具体的JWT实现我这里不做过多的论述,留几个地址作为参考即可:

    http://www.cnblogs.com/xiekeli/p/5607107.html 

    http://blog.csdn.net/a82793510/article/details/53509427 

    http://riddickbryant.iteye.com/blog/561596  

© 著作权归作者所有

共有 人打赏支持
wiitht
粉丝 2
博文 158
码字总数 113789
作品 0
深圳
架构师
什么是JWT(JSON WEB TOKEN)

转自于:http://www.jianshu.com/p/576dbf44b2ae 什么是JWT Json web token(JWT)是为了网络应用环境间传递声明而执行的一种基于JSON的开发标准(RFC 7519),该token被设计为紧凑且安全的,...

莫问今朝乄
2017/11/18
0
0
[笔记] JWT Java Json Web Token (一)

jwt实现 JWT简单介绍 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。J...

z201
2017/10/22
0
0
不要用JWT替代session管理(上):全面了解Token,JWT,OAuth,SAML,SSO

通常为了弄清楚一个概念,我们需要掌握十个概念。在判断 JWT (Json Web Token) 是否能代替 session 管理之前,我们要了解什么是 token,以及 access token 和 refresh token 的区别;了解什么...

李熠
07/03
0
0
八幅漫画理解使用JSON Web Token设计单点登录系统

八幅漫画理解使用JSON Web Token设计单点登录系统 Sep 07, 2015 in Engineering 上次在《JSON Web Token - 在Web应用间安全地传递信息》中我提到了JSON Web Token可以用来设计单点登录系统。...

祖冲之
前天
0
0
八幅漫画理解使用 JWT设计的单点登录系统

上次在《JSON Web Token - 在Web应用间安全地传递信息》中我提到了JSON Web Token可以用来设计单点登录系统。我尝试用八幅漫画先让大家理解如何设计正常的用户认证系统,然后再延伸到单点登录...

John Wu
04/18
0
0
一种全新的分布式用户认证架构设计

前言 分布式用户认证, 有个简单的称谓就是单点登陆, 即一处登陆,到处通行. 说详细一点就是,集中的用户统一身份认证和分布的式的用户验证和资源访问控制. 对于小公司而言,提供的服务少,常常用...

黄洪清
2017/10/20
0
5
Json Web Token介绍与基本使用

一、Session与JWT 1.1 传统Cookie+Session +的存在主要是为了解决HTTP这一下服务器如何识别用户的问题。 其原理就是在用户登录通过验证后,服务端将数据加密后保存到客户端浏览器的Cookie中,...

yuanlaijike
05/03
0
0
tomsun28/bootshiro

bootshiro 自己在前后端分离上的实践 要想实现完整的前后端分离,安全这块是绕不开的,这个系统主要功能就是动态restful api管理,这次实践包含两个模块,基于搭建的权限管理系统后台bootshi...

tomsun28
04/25
0
0
SpringBoot 整合 oauth2(五)实现 jwt 及 扩展

什么是jwt,即 json web token。JWT是一种用于双方之间传递安全信息的简洁的、URL安全的表述性声明规范。也是一种token,但是和token有一些不同。 jwt优点: 自包含 防篡改 可自定义扩展 JW...

FantJ
05/22
0
0
Spring rest 配置jwt 安全验证

在用spring + mybatis 做项目。之前安全验证用basic 方式现在想换成jwt。 jwt : JWS模式对这个内容进行了数字化签名。这个内容被用来存放JWT的声明.服务端签名出JWT并且发送到客户端,并在用...

Fly_f
2017/10/28
0
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

idea tomcat 远程调试

tomcat 配置 编辑文件${tomcat_home}/bin/catalina.sh,在文件开头添加如下代码。    CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7829" Idea端配......

qwfys
51分钟前
0
0
遍历目录下的文件每250M打包一个文件

#!/usr/bin/env python # -*- utf-8 -*- # @Time : 2018/7/20 0020 下午 10:16 # @Author : 陈元 # @Email : abcmeabc@163.com # @file : tarFile.py import os import tarfile import thr......

寻爱的小草
53分钟前
0
0
expect同步文件&expect指定host和要同步的文件&构建文件分发系统&批量远程执行命令

20.31 expect脚本同步文件 expect通过与rsync结合,可以在一台机器上把文件自动同步到多台机器上 编写脚本 [root@linux-5 ~]# cd /usr/local/sbin[root@linux-5 sbin]# vim 4.expect#!/...

影夜Linux
今天
0
0
SpringBoot | 第九章:Mybatis-plus的集成和使用

前言 本章节开始介绍数据访问方面的相关知识点。对于后端开发者而言,和数据库打交道是每天都在进行的,所以一个好用的ORM框架是很有必要的。目前,绝大部分公司都选择MyBatis框架作为底层数...

oKong
今天
10
0
win10 上安装解压版mysql

1.效果 2. 下载MySQL 压缩版 下载地址: https://downloads.mysql.com/archives/community/ 3. 配置 3.1 将下载的文件解压到合适的位置 我最终将myql文件 放在:D:\develop\mysql 最终放的位...

Lucky_Me
今天
1
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

问题终结者
今天
1
0
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令

expect脚本同步文件 在一台机器上把文件同步到多台机器上 自动同步文件 vim 4.expect [root@yong-01 sbin]# vim 4.expect#!/usr/bin/expectset passwd "20655739"spawn rsync -av ro...

lyy549745
今天
1
0
36.rsync下 日志 screen

10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具 10.32/10.33 rsync通过服务同步: rsync还可以通过服务的方式同步。那需要开启一个服务,他的架构是cs架构,客户端服务...

王鑫linux
今天
0
0
matplotlib 保存图片时的参数

简单绘图 import matplotlib.pyplot as pltplt.plot(range(10)) 保存为csv格式,放大后依然很清晰 plt.savefig('t1.svg') 普通保存放大后会有点模糊文件大小20多k plt.savefig('t5.p...

阿豪boy
今天
2
0
java 8 复合Lambda 表达式

comparator 比较器复合 //排序Comparator.comparing(Apple::getWeight);List<Apple> list = Stream.of(new Apple(1, "a"), new Apple(2, "b"), new Apple(3, "c")) .collect(......

Canaan_
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部