单点登录

 

SSO单一登录(single sign-on),意思是指在多套系统并存的环境下,用户只需登录一次即可访问其他授权的系统。

提起SSO(单一登录),大概企业里的IT人员无人不知,但真正意识到其复杂度的,未必有多少,只有亲身实施过的技术人员,也许才明白个中玄妙。本文基于蓝凌为国内几十家大中型企业的服务案例,针对SSO的相关技术和案例进行一些探讨,希望能帮助到企业IT人员更深刻理解SSO技术及其应用。

SSO是一把双刃剑SSO可以简化用户登录过程,提升用户的登录体验;同时可以降低IT管理员大量账户和密码维护成本;SSO还提供了符合萨班斯法案的密码集中管理工具;但SSO同时也产生了一种安全风险,某一系统用户身份一旦被攻破,则意味着所有参与SSO网络的应用系统也被穿透。因此需要慎重考虑SSO的范围及安全级别的局限性。

 

SSO涉及不同层面的需求:SSO的实质是多套系统能否识别同一用户的身份,并在各套系统间实时同步用户身份信息,以支持各套系统进行用户权限控制。基于这样的原因,一套SSO技术至少应该考虑一下四个层面的需求:

1、 单点登录,多点即可同时登录;

2、 单点注销(退出登录),多点即可同时注销;

3、 单点切换用户,多点即可同时切换;

4、 单点登录过期,多点同时过期。

 

现实环境中,一个最佳的SSO环境(整合代价最小)应该是:

1、一个用户在不同系统只有一个共同登录名和密码

2、各套应用系统共享一套用户名和密码信息

3、应用系统采用相同的技术架构且域名后缀相同

而一个最坏的SSO环境(整合代价最大)会体现为:

1、一个用户在不同系统有不同的登录名和密码

2、不同的应用系统各自存储了独立的用户名和密码

3、 应用系统采用不同的技术架构且域名后缀不同,甚至只有IP而无域名。

单点登录的核心步骤

6.1  用户未登录时访问子站一,子站一服务器检测到用户没登录(没有本站session,因为没传过来session对应cookie),于是通知浏览器跳转到SSO服务站点,并在跳转的URL参数中带上当前页面地址,以便登录后自动跳转回本页。

6.2  SSO服务站点检测到用户没有登录,于是显示登录界面。

  用户提交登录请求到服务端,服务端验证通过,创建和账号对应的用户登录凭据(token)。

  然后,服务端通知浏览器把该token作为SSO服务站点的cookie存储起来,并跳转回子站一,跳回子站一的URL参数中会带上这个token。

6.3  浏览器在写SSO服务站点cookie后,跳转回子站一。

  子站一服务端检测到浏览器请求的URL中带了单点登录的token,于是把这个token发到SSO服务站点验证。

  SSO服务端站点拿token解密出用户账号,把账号信息中允许子站一访问的部分返回给子站一。

  子站一根据返回的信息生成用户在本站的会话,把会话对应cookie写入浏览器,从而完成在本站的登入以及会话保持。之后用户访问再子站一时,都会带上这个cookie,从而保持在本站的登录状态。

6.4  用户再访问子站二。子站二服务器检测到用户没登录,于是通知浏览器跳转到SSO服务站点。

6.5  浏览器访问SSO服务站点时会带上上述6.2环节创建的token这个cookie。SSO服务站点根据该token能找到对应用户,于是通知浏览器跳转回子站二,并在跳转回去的URL参数中带上这个token。

6.6  子站二服务端检测到浏览器请求的URL中带上了单点登录的token,于是又会走上述6.3对应步骤,完成用户在本站的自动登录。

 

单点登录时序图


 

文章详情来源:

http://blog.csdn.net/jljf_hh/article/details/50099135 单点登录的三种实现技术

http://www.cnblogs.com/baibaomen/p/sso-sequence-chart.html

 

posted @ 2017-11-07 16:20  骑着蜗牛闯世界  阅读(465)  评论(0编辑  收藏  举报