1.什么是SSO
SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。
2.为什么要使用SSO
现在随着网站的壮大,很多服务会进行拆分,会做SOA服务,会使用dubbo做微服务,或者简单的小型分布式,这样在服务与服务之间,或者系统与系统之间都是通过HTTP或者restful来进行通信的,在以往的单系统应用中,我们都是把user存入session中的,需要用到的时候随时取,如果取不到就跳转到登录注册页面,非常简单的原理。在现如今的分布式应用中,基于人力物力的考虑,就可以使用SSO系统来保证session同步。
3.如何实现SSO
SSO的使用大体上可以分为三种情况:
同一个域名下的不同站点
使用cookie就能实现,优点:实现容易 缺点:不够安全。
同一个域但是不同的子域
使用cookie并将使子域sessionId相同即可,优缺点同上。
不同域之间
(1)登录任意站点时同时向其他站点设置cookie,在访问时通过重定向的方式来实现跨域请求,退出时从响应中移除cookie即可。缺点是系统过多时,不同域之间的重定向会大大降低效率。
(2)实现一个单独的SSO系统来进行用户信息验证,不同站点在登录时只需重定向至SSO站点即可,浏览器也只需存储SSO的cookie即可完成验证。
优点:安全,效率高,有成熟框架如 CAS
缺点:成本高
因此可根据实际业务需求来选择适合方式。
4.SSO可能遇到的问题
(1)跨域请求问题
一般使用重定向或JSONP方式。
(2)超时问题
可能有两种情况,一种是session超时,SSO中的用户凭证未超时,此时可重新获取有效用户凭证即可保证用户正常使用;一种是SSO中的用户凭证超时,此时只需要重新跳转到登录页面即可。