基于Session共享的单点登录或通行证系统方案

本文主要描述如何基于Session共享来实现单点登录。

假设有两个应用www.example.com, passport.example.com。本文以SpringSession和Redis来实现相关功能。

用户访问passport.example.com,输入用户名和密码认证成功后,在服务端建立会话,SESSIONID以cookie形式保存在根域example.com,用户访问www.example.com可以读取到SESSIONID,服务端根据SESSIONID从会话中读取相关认证信息是否已存在,如已存在说明认证成功。这是一个简单的文字描述,下面贴一下截图可以更形象的说明整个过程。

用户访问passport.example.com, 这个时候用户尚未登录


用户访问passport.example.com/login,假设登录成功



用户登录成功后访问passport.example.com


用户访问www.example.com


可以看到虽然跨域了,但是sessionid相同,这是实现不同应用单点登录的必须条件。


下面看一下redis里面的存储情况。


以sessionid为key的value是一种hash结构。

通过hget命令可以看到保存在会话中的user和account数据。


源代码

https://github.com/chenhaifeng2016/SpringSessionPassport


本文和代码只是简单介绍了原理,开发一个健壮的单点登录系统还有很多工作要做,这里只是简单介绍一下原理起到一个抛砖引玉的作 用。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值