分布式系列 单点登录和session共享

          最近跟组织一起学习,本来说好的学习大数据,不知道怎么的,忽然一看材料,莫名转战到了分布式,搞起了高级架构的知识了。

    看了看故事的梗概,还不错,从基础的分布式调用和架构设计,再到事务一致性,HA,到web应用,数据库高可用和性能优化等一系列,也算是有一个很不错的体系,就计划坚持着学下去了。

    在学习分布式系列之前,曾经也花了一段时间了解过单点登录和Session共享的问题,只不过当时没有比较深入的学习和分析过,只是简单的看过一些shiro视频和博客,希望借着这次机会,从理论上和代码层面都有一个比较深刻的认识。

    好了,啰嗦的够多了,进入正题环节。

    

    单点登录解决的问题其实很简单,就是通过一个用户认证系统,打通所有关联子系统的认证,从而达到安全高效访问子系统的目的。而session共享是实现的单点登录的一种方式。

    一、真伪单点登录

    何为真单点,何为伪单点呢?其实理解起来也很简单。

    伪单点,举个例子,比如一般中小公司里的内部系统,这类系统一般只有一套用户认证和权限系统,各子系统之间也都是相互信任的,对用户的验证方式都是统一的,这类就是伪单点;

    像两个比较大型的系统之间的整合,比如A公司的a系统要整合到B公司的b系统中,两个系统之前肯定不是统一的验证方式,信任什么的更不用提了,这类单点就稍微复杂一些,也就是真单点。

    二、如何解决单点问题

    关于解决单点问题,其实有比较成熟的策略了,适合各种简单或复杂的业务场景。

    1、简单些的,比如,使用shiro进行会话管理;

    2、服务器间的session复制;

    3、shiro+cas实现;

    4、使用专业的SSO产品。

    一般来说,shiro方式实现就可以了,大型企业或需要实现真单点的,一般可能会使用到专业的SSO产品。

   三、实现原理

                    

   从上图可以看出,客户端在访问系统时:

   1、要先通过认证服务器,认证服务器在用户登陆后,会颁发一个ticket;

   2、客户端拿到ticket后,再去访问子系统;

   3、若子系统无法识别,或检测到非法,会再次转到认证服务器,让客户端再次登录。

   客户端get到ticket后,在到达每个子系统之前,都会被检测一下ticket,也就是检查用户的登录信息。

   

   今天先到这里,简单描述了基本的单点登录原理,下一篇会根据更详细的流程图分析一下代码实现。

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值