1492692055
前言:单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。
单点登录处处可见,例如在weibo.com登录过微博账号,然后你进入另一个系统blog.sina.com.cn是不需要再登录的,这就是SSO,一处登录处处可用。
长话短说,先来一个demo压压惊(这里只演示了三个系统),例如
system1 http://1.sso.xiaocp.com
system2 http://2.sso.xiaocp.com
system3 http://3.sso.xiaocp.com
这是三个系统,只要任意登录其中一个系统,其他另外两个则不需要再次登陆(账号密码随意填)
如何实现SSO
当然,大家没做过也听说过,实现sso单点登录一般都是使用统一登录接口,没错了,我这里也是采用统一登录接口http://login.sso.xiaocp.com/
我做的这个sso单点登录采用的是页面重定向的方式以及观察者模式(广播机制)
首先实现统一的登陆接口跟统一的退出接口,然后每个单点登陆系统都有回调监听登陆或者退出接口
SSO流程大概如下
用户请求,附带要重定向的url -> 统一登录接口 -> 通过验证,登陆成功 -> 广播通知每个系统的回调接口 -> 页面重定向 -> 重定向到指定url页面
设计缺陷:随着系统的增多效率会有所下降。