SSO概述
SSO(Single Sign On)即单点登录,是指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分。SSO可以提升用户体验,做到登录机制统一开发与维护,SSO 不仅是有用的而且是必要的。
SSO演进与分类
详述一下各种场景下的SSO问题,它们之间是逐步升级、逐步复杂化的关系。
同域及同根域单点登录
基于浏览器和Http协议的支持,一次登录成功,将Cookie写到同域(如产品a域名xyz.cn/a和产品b域名xyz.cn/b,同域xyz.cn)或根域(如产品a域名a.xyz.cn和产品b域名b.xyz.cn,根域为.xyz.cn)下,那么这样所有的站点就能实现同一个域名或根域下的Cookie共享,自然实现了“单点登录”。
跨域单点登录
如果是多个根域名,由于浏览器和http协议不支持不同根域下的cookie共享,上述简单方式不可行。可以考虑在登录成功之后将Cookie回写到多个域名下,或者采取jsonp的方式,但是维护成本较高且不具有普遍适用性。比较通用的方式是基于标准的CAS方案来实现。
SSO仅仅是一种架构,一种设计,而CAS则是实现SSO的一种手段。两者是抽象与具体的关系。当然,除了CAS之外,实现SSO还有其他手段,比如简单的 cookie。
CAS(Central Authentication Service)中心授权服务,本身是一个开源协议,分为 1.0 版本和 2.0 版本。1.0 称为基础模式,2.0称为代理模式,适用于存在非Web应用之间的单点登录。
术语
TGT:Ticket Granted Ticket(俗称大令牌,或者说票根,他可以签发ST)
TGC:Ticket Granted Cookie(cookie中的value),存在Cookie中,根据他可以找到TGT。ST:Service Ticket (小令牌),是TGT生成的,默认是用一次就生效了。过程与原理
参考官网时序图(1.0版本):
参考链接