SSO

原创
2019/04/17 11:12
阅读数 938

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方案来实现。

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版本):

参考链接

掘金-前端需要了解的SSO与CAS知识

cnblogs-CAS单点登录原理解析(转载)

IBM-使用CAS在Tomcat中实现单点登录

简书-浅谈SAML,OAuth,OpenID和SSO,JWT和Session

展开阅读全文
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部