java单点登录跨域_深入浅出让你理解跨域与SSO单点登录原理与技术

原标题:深入浅出让你理解跨域与SSO单点登录原理与技术

一:SSO体系结构

SSO

SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。

体系结构

当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份校验,如果通过校验,应该返回给用户一个认证的凭据--token;用户再访问别的应用的时候就会将这个token带上,作为自己认证的凭据,应用系统接受到请求之后会把token送到认证系统进行校验,检查token的合法性。如果通过校验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了 。

9ff022c2f546a92137bf236dc7c9d2ff.png

Token(令牌)

token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。

当用户第一次登录后,服务器生成一个token并将此token返回给客户端,客户端收到token后把它存储起来,可以放在cookie或者Local Storage(本地存储)里。以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码。

简单token的组成;uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token的前几位以哈希算法压缩成的一定长度的十六进制字符串。为防止token泄露)。

设计token的值可以有以下方式

用设备mac地址作为token

用sessionid作为token

同域SSO原理分析

实际上,HTTP协议是无状态的,单个系统的会话由服务端Session进行维持,Session保持会话的原理是通过Cookie把sessionId写入浏览器,每次访问都会自动携带全部Cookie,在服务端读取其中的sessionId进行验证实现会话保持。同域下单点登录其实就是手写token代替sessionId进行会话认证。

token的生成

服务端生成token后,将token与user对象存储在Map结构中,token为Key,user对象为value,response.addCookie生成新的Cookie,名为token,值为token的值。

token过期移除

将服务端的token从Map中移除,再删除浏览器端的名为token的Cookie。

认证流程

d5524bb5702fc6ef1a933323021174ff.png

跨域SSO原理分析

当有多个系统时,认证机制的流程如下:

提供用户登录界面,供用户进行身份认证

用户验证通过后,生成新token

将tokenuser 对存入全局MAP中供校验

将token写入所有域的Cookie中

页面重定向回原始请求URL

分析

当系统有多个并且在不同域(domain)时,Cookie只会作用在当前域下。

将token写入所有域的Cookie中才是解决跨域SSO的核心。

ae5e58f02b1589df8ac24be9bd2c2166.png

二:Cookie增删改查

如何读取Cookie?

通过Servlet中的request对象可以读取到Cookie数组,然后foreach遍

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值