单点登录sso

单点登录常用有3种方式:

1. 主域名共享cookie

适用于同域名系统的单点登录。所有的子系统域名共享一个主域名的cookie,这样就可以实现登录一个系统,所有系统登录。

例如,a1.test.com, a2.test.com, 登录其中一个系统,设置.test.com的cookie,就可以实现其他系统也登录。

缺点:

1. 主域名要一致
2. 如果cookie承载session,则要求所有子系统web容器一致,比如都要使用nginx,不能一个nginx,一个tomcat。

2. sso站点认证授权

所有站点的认证,统一到一个sso站点进行,认证成功后,带着token返回来源站点。来源站点,使用token,去sso站点验证,验证成功,则授权登录。

例如:

认证站点: sso.com
系统站点: a.com
系统站点: b.com

用户访问a.com,若未登录,则跳转到sso.com,并带上a.com这个来源地址,则给出登录界面,登录成功后,生成一个授权token,保存在sso.com的cookie中,
通过a.com?token=token返回a.com, a.com拿到token,请求sso.com验证是否有效,有效则授权登录。

用户访问b.com,同样过程,若a.com已登录,即有未过期的token,则直接b.com?token=token返回,b.com同样验证token有效,则授权登录。
这样就达到登录一个,其他的也登录的效果。

3. sso登录写第三方cookie

在一个站点登录成功后,向一个sso地址或目标站点本身发送jsonp请求,验证成功后,重定向到目标站点,携带参数登录成功后,设置目标站点的cookie。

重复此过程,是的所有需要登录的站点的cookie都设置完成,多个系统的单点登录就完成了。

登出过程,一个系统登出成功后,以jsonp请求所有需要登出的系统的登出接口,清理cookie即可。

详细过程可以参考, 阿里(淘宝、天猫、一淘)、京东SSO分析 

posted @ 2020-05-18 10:57  全玉  阅读(300)  评论(0编辑  收藏  举报