原理图

www.cas.client.com为cas客户端,也就是用户要访问的资源所在,www.cas.server.com为cas服务端,是单点登录的认证中心。

图中各步骤拆解说明:

①:首先用户访问www.cas.client.com,cas客户端收到请求判断用户是否登录。判断过程在AuthenticationFilter过滤器中进行。AuthenticationFilter主要判断用户是否登录,未登录则重定向到登录页面。

那么是如何验证用户是否登录过呢?

如果session中包含“const_cas_assertion”属性,说明已经登录,跳过此过滤器执行配置的其他过滤器;

如果ticket参数不为空(可能是登陆后跳转回来的),跳过此过滤器,执行TicketValidationFilter 验证ticket;

如果前两个条件都不满足,重定向到cas服务端,返回登录页面进行登录操作。

②:①中发现用户未登录,将浏览器重定向到www.cas.server.com,并携带一个参数service,参数值为①中的请求地址。


③:cas服务端收到请求将登录页面返回给浏览器。

④:用户输入用户名、密码,提交到cas服务端验证。

⑤:cas服务端验证用户名、密码有效。

当cas服务端验证用户名、密码有效后,将浏览器重定向回①中service值对应的url并携带一个ticket参数,同时会在Cookie中设置一个CASTGC,该cookie是网站www.cas.server.com的cookie,只有访问这个网站才会携带这个cookie过去。

Cookie中的CASTGC:向cookie中添加该值的目的是当下次访问www.cas.server.com时,浏览器将Cookie中的TGC携带到服务器,服务器根据这个TGC,查找与之对应的TGT。从而判断用户是否登录过了,是否需要展示登录页面。TGT与TGC的关系就像SESSION与Cookie中SESSIONID的关系。

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

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

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

⑥:www.cas.client.com取得ticket后进入TicketValidationFilter过滤器,该过滤器主要验证ticket是否有效。

⑦:www.cas.server.com接收到ticket之后,验证,验证通过返回结果告诉www.cas.client.com该ticket有效。

⑧: www.cas.client.com将请求的资源返回给浏览器。

重点说明

1. 在第⑤步的时候如果验证成功,则 cas服务端 会返回一个 cookie并在cas服务端记录这个cookie值,响应后浏览器端设置cookie 到 www.cas.server.com(cas服务端地址) 地址下,再下一次访问www.cas.server.com(cas服务端地址) 地址时 带上这个cookie。
2. 用户 在访问另一个域名 b.com 时,步骤和第一次访问 www.cas.client.com 域名时一样,唯一的区别就是在②步重定向到www.cas.server.com(cas服务端地址)时,带上第一次访问www.cas.client.com 时 记录的 www.cas.server.com(cas服务端地址)地址下的cookie信息, cas服务端 在拿到cookie信息时就很容易判断该用户是否登录。
3. 在用户端记录 www.cas.server.com(cas服务端地址) 地址下的cookie是CAS中最重要的一个环节。
4. cas服务端地址 必须是一样;这里用的地址是 www.cas.server.com ,实际地址可进行配置。
5. CAS解决方案一般都是同一公司下不同域名之间实现单点登录。

转载地址:http://www.zuidaima.com/blog/4280983218228224.htm
如有侵权请联系删除,谢谢

CSA实现单点登录原理详解 ,如何判断访问不同域名时用户是否登录相关推荐

  1. SSO单点登录原理详解

    本文主要对SSO单点登录与CAS.OAuth2.0两种授权协议的关系和原理进行详细说明. 1. 基础概念 术语解释 SSO-Single Sign On,单点登录 TGT-Ticket Grantin ...

  2. ***原理详解(中篇)

    本文来自网易云社区. 3. ***工作原理 终于说到***工作原理了,在说这个之前必须先介绍以下普通socks 5的工作原理,将之与***的"变异版"进行对比,就可以看出***处理 ...

  3. 多维系统下单点登录深入详解

    多维系统下单点登录深入详解 1. 从淘宝天猫的单点登录说起 1.1 SSO单点登录 1.2 淘宝天猫登录场景解析 2. 单点登录之整体解决方案 2.1 设计方案-Cookie 2.2 设计方案-分布式 ...

  4. Git 原理详解及实用指南

    Git 原理详解及实用指南 什么是版本控制系统(VCS) 很多人认为 Git 难以理解的第一个门槛在于:所谓的「Git 是一个分布式版本控制系统」这句话的具体含义不够清楚.其实分布式版本控制系统(Di ...

  5. 使用order by排序判断返回结果的列数,order by排序判断字段数原理详解

    「作者主页」:士别三日wyx order by排序猜解列数原理详解 一.order by的两种使用方式 1)按照字段名排序 2)按照索引排序 二.order by怎么判断字段数? 1)正常的排序 3) ...

  6. csrf漏洞防御方案_CSRF 漏洞原理详解及防御方法

    跨站请求伪造:攻击者可以劫持其他用户进行的一些请求,利用用户身份进行恶意操作. 例如:请求http://x.com/del.php?id=1是一个删除ID为1的账号,但是只有管理员才可以操作,如果攻击 ...

  7. FTP协议及工作原理详解

    FTP协议及工作原理详解 1. FTP协议 什么是FTP呢?FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写. 该协议是Internet文件传送的 ...

  8. VLAN原理详解[转载] 网桥--交换机---路由器

    来自:http://blog.csdn.net/phunxm/article/details/9498829 一.什么是桥接   桥接工作在OSI网络参考模型的第二层数据链路层,是一种以MAC地址来作 ...

  9. spring依赖注入原理详解(转载)

    spring依赖注入原理详解----转载 所谓依赖注入就是指:在运行期,由外部容器动态地将依赖对象注入到组件中.当spring容器启动后,spring容器初始化,创建并管理bean对象,以及销毁它.所 ...

最新文章

  1. Manage Common Field Service Jobs
  2. idea装python插件_学习idea2020手动安装python插件的实现方法
  3. Linux RPM包校验和数字证书
  4. [转载]使用awk进行数字计算,保留指定位小数
  5. [转]Newtonsoft.Json高级用法
  6. poj 3667 Hotel 线段树 内存分配问题
  7. JSP开发常用问题解决
  8. [2019杭电多校第八场][hdu6667]Roundgod and Milk Tea
  9. 入职直接给事业编, 90万补贴+50万科启,重庆高校
  10. 冒泡排序及一个小小的优化
  11. 我花了一夜用数据结构给女朋友写个H5走迷宫游戏
  12. tp框架中构造函数__construct()与初始化函数_initialize()的区别
  13. 智能家居远程控制:实现 APP 与 ESP8266 远程通信
  14. 电影感悟-豆瓣TOP3
  15. Android 微信支付宝授权获取用户信息
  16. 算法笔记胡凡 第3章 入门篇
  17. 天玑800u处理器怎么样,相当于骁龙的多少
  18. The error may exist in /com/bjpowernode/dao/StudentDao.xml ### Cause: org.apache.ibatis.builder.Buil
  19. 论文中的参考文献序号自动链接到对应的参考文献
  20. 数码相框(四、使用freetype库实现矢量字体显示)

热门文章

  1. C#,计算几何,计算机图形学,三次B样条曲线插值算法(B-Spline Curve Interpolation)的基本原理及源代码
  2. 网赚真的会有市场吗?
  3. 截瘫的常规治疗措施包含哪些
  4. 程序员经常聚集的开发者社区总览表
  5. 新版极域密码破解,无逆向
  6. 通信光缆生产制作工艺步骤
  7. 【调剂】北京石油化工学院招收环境科学与工程、资源与环境硕士研究生
  8. SkeyeWebPlayer.js H5播放器开发之webpack项目创建级编译配置(一)
  9. Vue之vuex实现简易计算器
  10. 洛伦茨曲线半高全宽_合理的半高宽FWHM.PPT