单简单了解单点登录流程

182 阅读3分钟

做了那么多年前端,还没做过有关于单点登录的项目,早之前我理解的单点登录是一个账号只能一个地方登录。其实单点登录我们使用的太多了。比如我们登录了淘宝相当于登录了天猫。

登录的核心无非就是把登录凭证缓存在客户端,session、cookie、localstorage,可以是前端自己注入也可以是后端注入,登录的凭证也就是各种加密解密的东西,比如JWT等。可以是持久的会话,也可以是临时的会话。想要什么样的登录都可以实现。

单点登录简称SSO,是比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。需要单点登录主要是因为http的同源策略限制了两个不同源的资源进行交互,比如cookie只能是当前域名和子域名可以访问。提一嘴,主域名可以设置cookie私有还是共享给子域名,主域名不能设置子域名的cookie,子域名设置cookie只能设置自身或者高于自身的域名下(这是单点登录的前提)。XHR可以开启跨域名携带cookie(withCredentials: true),需要服务器设置允许的白名单(几乎不会配置通配符*)。

要了解单点登录就一定要知道CAS:

CAS是Central Authentication Service的缩写,中央认证服务,一种独立开放指令协议。CAS 是 耶鲁大学(Yale University)发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。

下面是单点登录的流程,简便的一个流程:

图片1.png

当另一个这个企业下的平台访问的时候:

图片2.png

几点需要注意一下,临时凭证只能使用一次,这些凭证其实有一些专业的名词,TGT、TGC、ST等,这边没有详细解释,可以自己去查一查。CAS系统是自己企业搭建的,不一定是第三方。浏览器会自己请求服务器是使用重定向302,会跳转到某个地址也是使用重定向。

有单点登录就有单点登场,单点登出就简单了,一个地方退出登录,通知自己的服务器,服务器发起请求到CAS,然后CAS清除登录的信息,并发给在这边注册过的服务器,通知退出登录了,清除所有的登录信息。

现在的第三方授权登录有点类似单点登录,这样就不需要注册很多的账号,SSO3.5版本之后也支持通过授权登录。第三方授权登录跟SSO初衷是不太一样,但是结果非常接近,也就是第三方授权登录的没有单点登出。感兴趣可以去好好了解一下第三方授权登录,模式也有好几种。

欢迎关注订阅号 coding个人笔记