最近看到公司的需求里面有单点登录,就去了解了一下。下面将从SSO单点登录的原理、实现步骤以及实现demo几个方面来讲述自己的理解。
1、SSO根本原理:
登录状态的共享;
1)、登录状态的共享有两种实现方式:
一:cookie共享【但是cookie原则上不能跨域,通过合理的配置在二级域名相同的情况下可以跨域共享】。
二:通过Session共享登录状态。【Spring Session共享方案,分布式系统中常用】
三:通过IP+Agent+User的方式实现状态共享,实际上是模仿了cookie合session机制。【我自己研究的,适合绝对跨域的分布式系统】因为通过IP+Agent+User的形式理论上可以模仿cookie合session识别一次会话。
2、实现的概要步骤【网络上的步骤乱七八糟各种不合理,自己整理了下】
1)、子系统一登陆,未登陆则进入SSO认证中心认证,成功则更新登陆状态【创建全局会话】,返回共享媒介;
2)、子系统二携带共享媒介,获取全局会话,读取登陆信息和登陆状态,实质是通过共享媒介保持了会话状态。
3)、退出时只需要注销全局会话状态即可。
【以上的概要步骤对SSO根本原理的一、二、三都适用】
3、SSO登陆的demo[通过cookie共享实现的]
SSOAuth:
SSOWebDemo1:
SSOWebDemo2:
四:参考文章:
单点登录原理与简单实现
单点登录