一句话叙述:一次登陆的token信息,可在多个系统中通用
来源
由于网站的规模逐渐扩大,访问量逐渐提升,对于单机部署方案来说,给硬件带来了极大压力,后期引入了分布式集群部署方案。此环境下,遭遇了多系统验证信息通用的瓶颈,单点登录(SSO)应运而生。
实现
如何让 session id 或 token 在多个域中共享
同顶域下的单点登陆
Cookie-domain 设置顶级域名
可以给Cookie的 domain
属性设置为顶级域名,所有子域的网页都可以访问到此Cookie,并在网络请求中携带。以此博客举例,将需要通用的Cookie的 domain
属性设置为 .verivista.cn
,则子域 blog.verivista.cn
与 pt.verivista.cn
都可以访问到此Cookie。
跨域下的单点登录
CAS流程——SSO登陆中间站
A系统与B系统的登陆都需先跳转SSO中间站进行登陆,再由SSO中间站跳转对应系统的地址并传递需要的身份验证参数。
例如
登陆A系统时
|
跳转至 sso.xxx.cn?origin=A
地址进行登陆,登录后写入sso.xxx.cn域名的Cookie信息,使用此Cookie获取登陆A系统对应的token值 yyy
|
再通过重定向跳转至 a.xxx.cn?token=yyy
|
B系统登陆时同样跳转SSO中间站,使用之前的Cookie来获取B系统的token来跳转访问。
一般情况下使用同顶域方案足够完成大部分单点登录需求
评论区