单点登录:理解与访问流程
登录中心(CAS服务端) 虽然叫服务端但是却不在服务层在web层
单点登录功能主要针对网站的前台
每一个工程在真正部署的时候会以域名的形式部署
每一个模块都部署在不同的服务器上。但是登录 首页模块需要 用户中心需要 购物车需要 如果给每个模块在单独加一个登录的话用户体验太差,所以要有一个专门做登录的模块登录中心(CAS服务端),这样做的好处:
1.首先代码做到了集中
2.比如我们在用户中心登录后我们的登录中心(CAS服务端)会自动记录你的行为,让你在登录过后在进入其他模块的时候也不需要重新登录。
这就是单点登录,就是在一个点上进行登录,其他地方都同情
解决方案?
首先核心是用户的认证信息,存放到session中。
方案一:
session就直接用认证系统的session
方案二:
可以将session存放到redis缓存中,多个应用系统配置相同redis
方案三 :
使用消息队列
注意点:时效性、安全性、唯一性
CAS server与CAS Client的需要:
CAS server 需要单独部署
CAS Client 需要和服务端的对接
客户端其实就是架构图中的各个WEB模块,比如首页购物车用户中心等需要登录的模块都是客户端
SSO单点登录访问流程:
1.访问服务:浏览器访问某个WEB模块
2.定向认证:由客户端重定向到服务端
3.用户认证:验证用户信息账号密码吗,就是让用户输入账号密码
4.发放通票:服务端会产生一个像是通票一样的东西,发送到浏览器
5.验证票据:当浏览器访问到某个客户端时就会带票据,然后客户端会向服务端请求验证这个票据
6.传输用户信息:服务端会传回用户的username 给客户端登录的是谁