CSA实现单点登录原理详解 ,如何判断访问不同域名时用户是否登录
原理图
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实现单点登录原理详解 ,如何判断访问不同域名时用户是否登录相关推荐
- SSO单点登录原理详解
本文主要对SSO单点登录与CAS.OAuth2.0两种授权协议的关系和原理进行详细说明. 1. 基础概念 术语解释 SSO-Single Sign On,单点登录 TGT-Ticket Grantin ...
- ***原理详解(中篇)
本文来自网易云社区. 3. ***工作原理 终于说到***工作原理了,在说这个之前必须先介绍以下普通socks 5的工作原理,将之与***的"变异版"进行对比,就可以看出***处理 ...
- 多维系统下单点登录深入详解
多维系统下单点登录深入详解 1. 从淘宝天猫的单点登录说起 1.1 SSO单点登录 1.2 淘宝天猫登录场景解析 2. 单点登录之整体解决方案 2.1 设计方案-Cookie 2.2 设计方案-分布式 ...
- Git 原理详解及实用指南
Git 原理详解及实用指南 什么是版本控制系统(VCS) 很多人认为 Git 难以理解的第一个门槛在于:所谓的「Git 是一个分布式版本控制系统」这句话的具体含义不够清楚.其实分布式版本控制系统(Di ...
- 使用order by排序判断返回结果的列数,order by排序判断字段数原理详解
「作者主页」:士别三日wyx order by排序猜解列数原理详解 一.order by的两种使用方式 1)按照字段名排序 2)按照索引排序 二.order by怎么判断字段数? 1)正常的排序 3) ...
- csrf漏洞防御方案_CSRF 漏洞原理详解及防御方法
跨站请求伪造:攻击者可以劫持其他用户进行的一些请求,利用用户身份进行恶意操作. 例如:请求http://x.com/del.php?id=1是一个删除ID为1的账号,但是只有管理员才可以操作,如果攻击 ...
- FTP协议及工作原理详解
FTP协议及工作原理详解 1. FTP协议 什么是FTP呢?FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写. 该协议是Internet文件传送的 ...
- VLAN原理详解[转载] 网桥--交换机---路由器
来自:http://blog.csdn.net/phunxm/article/details/9498829 一.什么是桥接 桥接工作在OSI网络参考模型的第二层数据链路层,是一种以MAC地址来作 ...
- spring依赖注入原理详解(转载)
spring依赖注入原理详解----转载 所谓依赖注入就是指:在运行期,由外部容器动态地将依赖对象注入到组件中.当spring容器启动后,spring容器初始化,创建并管理bean对象,以及销毁它.所 ...
最新文章
- Manage Common Field Service Jobs
- idea装python插件_学习idea2020手动安装python插件的实现方法
- Linux RPM包校验和数字证书
- [转载]使用awk进行数字计算,保留指定位小数
- [转]Newtonsoft.Json高级用法
- poj 3667 Hotel 线段树 内存分配问题
- JSP开发常用问题解决
- [2019杭电多校第八场][hdu6667]Roundgod and Milk Tea
- 入职直接给事业编, 90万补贴+50万科启,重庆高校
- 冒泡排序及一个小小的优化
- 我花了一夜用数据结构给女朋友写个H5走迷宫游戏
- tp框架中构造函数__construct()与初始化函数_initialize()的区别
- 智能家居远程控制:实现 APP 与 ESP8266 远程通信
- 电影感悟-豆瓣TOP3
- Android 微信支付宝授权获取用户信息
- 算法笔记胡凡 第3章 入门篇
- 天玑800u处理器怎么样,相当于骁龙的多少
- The error may exist in /com/bjpowernode/dao/StudentDao.xml ### Cause: org.apache.ibatis.builder.Buil
- 论文中的参考文献序号自动链接到对应的参考文献
- 数码相框(四、使用freetype库实现矢量字体显示)