单点登录
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