Cas登录流程

最近的项目中需要使用cas单点登录,做个简单的记录,梳理下整个cas的认证的流程;这里以自己的应用为例;我项目的地址是

http://172.26.4.13:9998/

1>第一次访问http://172.26.4.13:9998/应用;访问任何一个需要权限的地址,后端的filter会拦截请求,并重定向到cas的地址

可以看到这里的状态码302,重定向的地址是

https://gg-sophon-13:8393/cas/login?service=http%3A%2F%2F172.26.4.13%3A9998%2Flogin%2Fcas

在cas重定向地址后面追加一个service参数表示登录成功之后要重定向回来的地址;

2>浏览器收到重定向请求之后,重定向到cas的登录界面;

3>.用户在cas登录界面输入用户名和密码,点击登录,提交请求

这个请求的结果302;重定向的地址是http://172.26.4.13:9998/login/cas?ticket=ST-212-BanHkbeSagimQnBE3ng47ABTZEY-gg-sophon-13;也就是重定向到我们最开始应用的地址,同时在后面追加了ticket属性;注意,还有set-cookie;设置了cookie,属性名是TGC;这个cookie是cas网站的cookie;以后只要浏览器访问cas认证服务器的时候都会带上这个cookie的,这个是单点登录的关键所在,其他的应用只要访问这个cas认证服务器都会带上这个tgc,认证服务器会根据这个tgc找到tgt;

4>应用请求http://172.26.4.13:9998/login/cas?ticket=ST-212-BanHkbeSagimQnBE3ng47ABTZEY-gg-sophon-13;应用后端服务会拿着这个ticket去向cas认证服务器发送请求,去校验这个ticket是否是正确的,这个serverTicket默认是有有效期的,10s就过期了,而且只能使用一次;cas认证服务器校验通过后,会返回用户的信息,应用就认为这个用户登录了;

到此cas认证流程结束;以后再访问上面的应用的时候,应用发现session中有当前用户信息(第一次认证通过的时候应用会保存用户的信息),就认为用户登录了,授权访问,不会再去请求cas认证服务器;

这里要区分几个关键词:

1)TGT:Ticket Granted Ticket(俗称大令牌,或者说票根,他可以签发ST)

2)TGC:Ticket Granted Cookie(cookie中的value),存在Cookie中,根据他可以找到TGT。

3)Service Ticket (小令牌),是TGT生成的,默认是用一次就失效了。也就是上面ticket的值。


下一次用户访问另外一个应用B,同样都是使用一个cas的;这个时候的流程是这样的

1>应用B检测到用户没有登录;因为应用B的session中没有当前用户信息;所以同理重定向跳转到cas认证服务器,同时带上serviec参数标识跳转回来应用B的地址;

2>因为之前应用A访问的时候,cas认证服务器在cookie中设置了tgc的值;所以这次访问的时候会带上这个cookie;

3>cas认证服务器发现tgc的值对应一个tgt;所以这里是不会显示cas的登录界面了,是因为存在tgc的值,默认用户登录过了;于是直接使用tgt签发一个service ticket,重定向应用B的地址,同时带上ticket=xxxx;

4>应用B根据ticket去cas认证服务器校验ticket的有效性,校验通过返回用户信息存储在session中;用户认证流程完成;

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值