cas sso单点登录 登录过程和登出过程原理说明

CAS大体原理我就不说了,网上一大把,不过具体交互流程没说清楚,所以有这篇文章,如果有错误,请多多指教 

 

登录过程

用户第一次访问一个CAS 服务的客户web 应用时(访问URL :http://192.168.1.90:8081/web1 ),
部署在客户web 应用的cas AuthenticationFilter ,会截获此请求,生成service 参数,然后redirect 到CAS 服务的login 接口,
url为https://cas:8443/cas/login?service=http%3A%2F%2F192.168.1.90%3A8081%2Fweb1%2F&logoutUrl=http%3A%2F%2F192.168.1.90%3A8081%2Fweb1%2Flogout%2F,

这个URL中有2个地址,一个是登录完成后的跳转地址,另外一个是用户登出时 访问的当前服务登出URL地址,后面这个地址保存在Cas server中,用户登出的时候使用

认证成功后,CAS 服务器会生成认证cookie ,写入浏览器,同时将cookie 缓存到服务器本地,
CAS 服务器还会根据service 参数生成ticket,ticket 会保存到服务器,也会加在url 后面,
然后将请求redirect 回客户web 应用,url 为http://192.168.1.90:8081/web1/?ticket=ST-5-Sx6eyvj7cPPCfn0pMZuMwnbMvxpCBcNAIi6-20 。
这时客户端的AuthenticationFilter 看到ticket 参数后,会跳过,由其后面的TicketValidationFilter 处理,
TicketValidationFilter 会利用httpclient 工具访问cas 服务的/serviceValidate 接口,
将ticket 、service 都传到此接口,由此接口验证ticket 的有效性,TicketValidationFilter 如果得到验证成功的消息,
就会把用户信息写入web 应用的session里。至此为止,SSO 会话就建立起来了,以后用户在同一浏览器里访问此web 应用时,
AuthenticationFilter 会在session 里读取到用户信息,所以就不会去CAS 认证,如果在此浏览器里访问别的web 应用时,AuthenticationFilter 在session 里读取不到用户信息,
会去CAS 的login 接口认证,但这时CAS 会读取到浏览器传来的cookie ,所以CAS 不会要求用户去登录页面登录,只是会根据service 参数生成一个ticket ,
然后再和web 应用做一个验证ticket 的交互。

 

 

登出过程
   
  用户执行登出操作,当前应用服务器会把这个登出请求重定向到CAS server,CAS server接受登出请求后,会检测用户的TCG Cookie,把对应的session清除,同时会找到所有通过该TGC sso登录的应用服务器URL提交请求,所有的回调请求中,包含一个参数logoutRequest,访问这个登出URL,
所有收到请求的应用服务器(就是是CAS client)会解析这个参数,取得sessionId,根据这个Id取得session后,把session删除。这样就实现单点登出的功能,用户无法在这个具体应用上继续操作了,只能重新登录才行。

 

 注:以上内容根据网络内容整理而成,如果侵犯到您的权益,请联系我

参考文档:

http://www.blogjava.net/xmatthew/archive/2008/07/09/213808.html

http://blog.csdn.net/feng27156/article/details/38060099

转载于:https://www.cnblogs.com/hubaoxi/p/4977058.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值