CAS登录过程是这样的:
登录http://a.alibaba.com/,
重定向到:http://cas.alibaba.com?url=ht...
登录页面输入用户名密码登录成功,跳转到http://a.alibaba.com?ticket=xxxx
cas server 认证ticket合法之后,set cookie到浏览器内存中一个cookie;
以后所有到访问都会带着这个cookie来访问,当然cookie是放在内存中到,浏览器关闭,cookie失效,要重新登录;并且cookie是有失效期的,失效之后,需要重新登录。
我的问题是:
输入用户名密码之后,cas server可以直接set cookie到浏览器,为什么还要多一步校验ticket的过程呢?为什么?感觉有点儿多此一举的啊?
求解答,拜谢~~~
4 回答
猛跑小猪
TA贡献1858条经验 获得超8个赞
ticket
是给客户端(CAS接入客户端)用的,当CAS登录后,浏览器记录了相应的cookie
,所以CAS可以知道当前用户是登录过的,但由于跨域的原因,客户端无法直接获取该cookie
,所以客户端是无法直接信任当前用户的,所以CAS内部设计了ticket
机制。用户登录CAS后,会重定向到客户端,此时会携带一个ticket
参数,客户端的CAS过滤器在拿到该ticket
后,与CAS服务器交互,校验ticket
,以交换认证状态,并且将认证状态记录到客户端自己的session
中,客户端是可以管理自己session
对应的sessionid
的(本质是一个cookie
),也就实现了认证过程,并且在CAS未登出或客户端cookie
未失效以前,都不用再请求CAS服务端,也算是对性能的优化。
添加回答
举报
0/150
提交
取消