文档章节

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

wiitht
 wiitht
发布于 2017/07/25 19:35
字数 836
阅读 208
收藏 1

    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
ASP.NET WebApi 基于JWT实现Token签名认证(发布版)

一、前言 明人不说暗话,跟着阿笨一起玩WebApi!开发提供数据的WebApi服务,最重要的是数据的安全性。那么对于我们来说,如何确保数据的安全将会是需要思考的问题。在ASP.NET WebService服务中...

阿笨net
09/07
0
0
JWT(JSON Web Token)

JWT 介绍 (https://jwt.io/) 是一个开放标准(RFC 7519),它定义了一种紧凑和自包含的方式,用于在各方之间作为 JSON 对象安全地传输信息。作为标准,它没有提供技术实现,但是大部分的语言...

潘天涯
08/22
0
0
不要用JWT替代session管理(上):全面了解Token,JWT,OAuth,SAML,SSO

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

李熠
07/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

中秋快乐!!!

HiBlock
17分钟前
0
0
Node安装教程

1、安装最新版的node 2、设置相关目录(以D盘为例) 分别建立目录:D:\node,D:\node\node-globa,D:\node\node-cache 命令行输入: // 设置npm国内镜像 npm config set registry https://re...

Mohan710
45分钟前
1
0
中国发布域名系统基础软件 “红枫”

9月12日消息,域名工程中心(英文缩写 ZDNS)发布了宣称自主开发的域名系统基础软件 “红枫(Maple DNS)”。 9月12日消息,域名工程中心(英文缩写 ZDNS)发布了宣称自主开发的域名系统基础软...

问题终结者
今天
1
0
Shell编程(分发系统介绍、expect远程登录、expect远程执行命令、expect传递参数)

分发系统介绍expect 分发系统expect即分发脚本,是一种脚本语言;通过他可以实现传输,输入命令(上线代码) 应用场景:业务越来越大,网站app,后端,编程语言是php,所以就需要配置lamp或者...

蛋黄_Yolks
今天
2
0
Java Http请求工具类

public static String httpPost(String source, String params) {URL url = null;HttpURLConnection conn = null;OutputStream os = null;String ret = null;try {......

yuewawa
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部