CAS cas单点登入和认证流程

1. 单点是如何实现分布式系统共享用户信息

用一个单独服务器来存储用户信息,所有的分布式子系统都从单独服务器来获取用户信息

2. CAS实现原理

例如:

  • cas服务的地址:localhost:9100
  • demo1的地址:localhost:9002
  • demo2的地址:localhost:9003

流程&原理:

2.1 登陆流程

(1) 访问demo1: http://localhost:9002 (当前浏览器并没有登陆过)

(2) 由于当前浏览器没有登陆过,那么就重定向到CAS,并且携带一个service参数[登陆成功之后要重定向回来地址]
http://localhost:9100/cas/login?service=http://localhost:9002/【get】
cas就跳转到登陆页面

(3) 在cas登陆页面输入用户名和密码,点击登陆就会携带用户和密码并发送
http://localhost:9100/cas/login?service=http://localhost:9002/【post】
如果cas校验用户名和密码,成功则重定向回service参数所指向的地址demo1,并且携带ticket
http://localhost:9002/?ticket=ST-1-Bazbfolpro2ocQgNbMyd-cas01.example.org

(4) 由demo1的过滤器拦截,拦截之后将ticket取出并后台去cas服务器校验(校验地址:http://localhost:9100/cas)

(5) 如果校验ticket成功,那么cas就可以返回用户信息,我们的子系统就可以缓存用户信息

cas:用户信息存储在session
cas登陆成功之后会返回一个非常关键的cookie:CASTGC

	CASTGC:value
	path:/cas

-- 全局会话意思:就是标识浏览器当前可能已经登陆

当子系统校验tikect成功并且,响应浏览器,那么当前子系统和浏览器之间的局部会话也就可以直接获得用户信息,只要浏览器和子系统之间的局部会话经过了ticket校验,就不会再重定向到cas服务器

2.2 认证流程

(1) 访问demo2:http://localhost:9003 , 由于没有校验过ticket,但是浏览器存在全局会话Cookie: CASTGC

(2) 重定向到CAS服务器并且携带service参数:
http://localhost:9100/cas/login?service=http://localhost:9003/
由于全局会话已经存在,那么当前请求就携带CASTGC到服务器,CAS服务器就通过CASTGC这个cookie获取当前浏览器登陆状态,如果已经登陆就直接重定向会demo2同时携带ticket。
http://localhost:9003/?ticket=ST-2-d54VwAjldMl24uEpuaZy-cas01.example.org

(3) 接着子系统就有过滤器或者拦截器获取ticket去cas校验

(4) 如果校验ticket成功,那么cas就可以返回用户信息,我们的子系统就可以缓存用户信息,和浏览器建立局部会话

转载于:https://my.oschina.net/edisonOnCall/blog/3044404

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值