单点登录,在企业的应用中是多样的。上篇文章中,我们提到企业的一个域名承载着不同的应用。但随着企业对新业务的探索,便会申请一些新的域名用于功能承载,一方面为了做区分,另一方面为了满足监管要求。在这种不同域名的模式下,打通原先站点的用户体系,就是本次介绍的 —— 不同域下的单点登录。
不同域名 SSO 原理设计
认证系统根据浏览器的登录信息,进行身份认证。如果通过,返回给浏览器一个证明 [ 认证系统_ticket ],再通过浏览器将 [ 认证系统 _ticket ] 发送到到各个应用设置相应 cookie 的 url,并返回给浏览器一个证明 [ 应用系统 _ticket ],再重定向到最初访问的页面,以后应用系统就可以自动登录。
不同域名 SSO 原理分析
实现单点登录说到底就是要解决如何产生和存储这个信任,以及其他系统如何验证这个信任的有效性,要点就是这两个点:存储信任、验证信任。
- 以 Cookie 作为凭证媒介,存放用户凭证
用户登录父应用之后,应用返回一个加密的 cookie,当用户访问子应用的时候,携带这个 cookie,授权应用解密 cookie 并进行校验,校验通过则登录当前用户。