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

cas sso单点登录 登录过程和登出过程原理说明相关推荐

  1. Java架构-CAS SSO单点登录框架介绍

    1.了解单点登录 SSO 主要特点是: SSO 应用之间使用 Web 协议(如 HTTPS) ,并且只有一个登录入口. SSO 的体系中有下面三种角色: User(多个) Web 应用(多个) SSO ...

  2. CAS SSO 单点登录 【完整版】

    什么是单点登录?什么是SSO? SSO就是单点登录!!! SSO即Single Sign On. 可是为什么我们要单点登录呢?为什么不能把所有的系统做成一个war包里呢? 道理很简单啊,如果这个银行这 ...

  3. [精华][推荐]CAS SSO单点登录服务端客户端学习

    1.了解单点登录 SSO 主要特点是: SSO 应用之间使用 Web 协议(如 HTTPS) ,并且只有一个登录入口. SSO 的体系中有下面三种角色: 1) User(多个) 2) Web 应用(多 ...

  4. linux配置服务器超时退出,Linux下实现不活动用户登录超时后自动登出

    摘要: 方法一:通过修改.bashrc或.bash_profile文件来实现通过修改home目录下的.bashrc或.bash_profile文件... 方法一:通过修改.bashrc或.bash_p ...

  5. linux自动登出时间,Linux下实现不活动用户登录超时后自动登出

    方法一:通过修改.bashrc或.bash_profile文件来实现 通过修改home目录下的.bashrc或.bash_profile文件来实现.这两个文件选择其中一个在末尾加入如下一行,具体操作如 ...

  6. CAS SSO 单点登录 实例

    1.因为是本地模拟sso环境,而sso的环境测试需要域名,所以需要虚拟几个域名出来,步骤如下: 2.进入目录C:\Windows\System32\drivers\etc 3.修改hosts文件 12 ...

  7. 整合spring cloud云架构 - SSO单点登录之OAuth2.0 登出流程(3)

    2019独角兽企业重金招聘Python工程师标准>>> 上一篇我根据框架中OAuth2.0的使用总结,画了一个根据用户名+密码实现OAuth2.0的登录认证的流程图,今天我们看一下l ...

  8. java 单点登出_CAS单点登出的原理

    [出版社直供]操作系统精髓与第九版 91.6元 包邮 (需用券) 去购买 > 单点登出功能跟单点登录功能是相对应的,旨在通过Cas Server的登出使所有的Cas Client都登出. Cas ...

  9. 本地前后端联调跳过cas sso单点登录

    很多项目集成cas单点登录系统,在本地开发联调的时候,往往会遇到单点登录的拦截,这会影响到我们正常的联调.我们客户端和服务通信的身份信息存储在浏览器cookie里面,那么处理方式非常简单.我们只要想办 ...

最新文章

  1. Butter Knife 8.8.1的安装和使用
  2. 文章如何做伪原创 SEO大神教你几招做原创网站文章的心得
  3. 理解MySQL——索引与优化
  4. 表格过滤器_不用记账软件也可以记录支出明细,这个在线协同表格很方便
  5. python django开发工具_利用pyCharm编辑器创建Django项目开发环境-python开发工具第一篇...
  6. 【操作系统】大内核和微内核的比较
  7. 黑马程序员全套Java教程_Java基础教程_API(十四)
  8. 高等数学(第七版)同济大学 习题8-1 个人解答
  9. 计算机科学与技术代码0812,一级学科代码及名称0812计算机科学与技术(2007年)本.doc...
  10. LSTM反向传播公式推导
  11. Imitate_ProcessRR轮盘调度
  12. uva10105 - Polynomial Coefficients(多项式系数)
  13. keras input 层
  14. 新手小坑:sql表int字段自动填0
  15. html前端显示tiff
  16. python mysqldb_python MySQLdb API手册
  17. 某女28天断食全记录,120—84
  18. ad7606驱动及仿真
  19. 回首过去,抚心自问,是什么“毁了”你的大学生活?
  20. Multimodal Machine Learning: A Survey and Taxonomy/多模态机器学习综述

热门文章

  1. jspServlet(2)
  2. Exchange server 2013 安装部署初体验
  3. vim中的 recording
  4. 杭州中联高级技术培训中心CCNA实验手册
  5. 关于ADB 执行报错问题-db server version (31) doesn't match this client (40); killing...
  6. Android获取网速的方法
  7. U3D assetbundle打包
  8. redis和memcache的高可用的探索
  9. live meeting中白板无法正常使用
  10. [Python]从零开始学python——Day03 字典,元组