1 相同顶级域名的单点登录 SSO
1.1 介绍
单点登录又称之为Single Sign On,简称SSO,单点登录可以通过基于用户会话的共享,他分为两种,先来看第一
的原理是分布式会话来实现。
比如说现在有个一级域名为 www.p2pi.cn
,是IT类网站,但是网站又可细分为不同的领域,可以通过构建二级域名提供服务给用户访问,比如: blog.p2pi.cn
、wallpaper.p2pi.cn
、download.p2pi.cn
等等,分别为博客、壁纸、资源网站等,只要用户在其中一个站点登录,那么其他站点不用重新登录。
也就是说,用户自始至终只在某一个网站下登录后,那么他所产生的会话,就共享给了其他的网站,实现了单点网站登录后,同时间接登录了其他的网站,那么其实这个就是单点登录,他们的会话是共享的,都是同一个用户会话。
1.2 Cookie + Redis 实现SSO
分布式会话后端的实现可以是基于redis的,如此会话可以流窜在后端的任意系统,都能获取到缓存中的用户数据信息,前端通过使用cookie,可以保证在同域名的一级二级下获取,那么这样一来,cookie中的信息是可以在发送请求的时候携带上的,这样从前端请求后端后是可以获取拿到的,这样一来,其实用户在某一端登录注册以后,其实cookie和redis中都会带有用户信息,只要用户不退出,那么就能在任意一个站点实现登录了。
- 那么这个原理主要也是cookie和网站的依赖关系,顶级域名
www.p2pi.cn
和*.p2pi.cn
的cookie值是可以共享的,可以被携带z至后端的,比如设置为.p2pi.cn
,.t.p2pi.cn
,如此是OK的 - 二级域名自己的独立cookie是不能共享的,不能被其他二级域名获取,比如:blog.p2pi.cn的cookie是不能被
download.p2pi.cn
共享,两者互不影响,要共享必须设置为.p2pi.cn
。
1.3 Cookie共享测试
前端代理里面需要设置
cookieDomain:'.p2pi.cn;'
SwitchHosts 需要配置host信息
# Test Share Cookie
127.0.0.1 blog.p2pi.cn
127.0.0.1 download.p2pi.cn
通过访问测试,发现在用户登录之后,两个站点是能够共享用户信息的。
只要前端网页都在同一个顶级域名下,就能实现cookie与session的共享,具体流程如下:
在这里插入图片描述2 不同顶级域名之间的单点登录 CAS
2.1 CAS引入
当用户访问www.p2pi.cn网站登录之后,会生成cookie存在,接着去访问www.p3p.cn,这个时候由于顶级域名不同,cookie是无法携带过去的,需要你进行二次登录,如下图所示:
在这里插入图片描述这个时候就需要用其他方式,实现顶级域名不同的时候,实现单点登录,这里可以使用CAS,具体流程如下:
在这里插入图片描述
如上图所示,多个系统之间的登录会通过一个独立的登录系统去做验证,所有系统的登录都需要经过这个系统,实现了统一登录。这个就称之为CAS系统。
CAS全称为 Central Authentication Service 即中央认证服务,是一个单点登录的解决方案,可以用于不同顶级域名之间的单点登录。
2.2 CAS时序图
CAS.png3 相关信息
- 博文不易,辛苦各位猿友点个关注和赞,感谢
网友评论