最新要闻
- 环球焦点!【全球新视野】今日热议:焦点快播:海通证券:货币紧缩政策边际放缓 贵金属有望迎来板块性投资机会 每日热门_焦点滚动_天天新要闻
- AMD为ROG掌机定制Zen4+RDNA3神U:功耗只有9W!|环球百事通
- 【聚看点】华为严打App互相拉起!不整改者直接下线、上报工信部
- 第一次!嫦娥五号发现月球天然玻璃:建基地的好材料-天天热头条
- 特斯拉中国五一出行报告:百位车友日行千里 没有里程焦虑 天天快报
- 去哪里?阿斯报:布斯克茨预计在巴萨夺冠后宣布自己的未来-世界讯息
- 美国统治全球48%半导体市场:研发投入占比2.5倍于中国
- 通讯!宝德暴芯x86处理器发布:百分百复刻Intel 10代酷睿
- 贾跃亭没忘记乐视!时隔6年 首次互动|环球微资讯
- 世界杯预选赛欧洲区第三轮德国主场被爆冷 当前快报
- 男子1天吃10顿暴瘦110斤:确诊为甲亢!医生科普
- 每日快看:董宇辉自曝曾抗拒卖货写检讨:一度撑不下去想放弃
- 每日信息:银河麒麟桌面系统升级V10 SP1 2303:固若金汤 真心好用!
- 当前视点!巴萨唯一爆点要走,5000万欧元违约金,让签约不要太容易
- 全球速讯:海康威视推双盘位NAS:1199元 最大40TB容量
- 因“挖呀挖”爆火美女老师身陷6大传闻:职业网红?一场直播打赏200多万?-天天要闻
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
网络基础 CAS协议学习总结_天天新资讯
架构介绍
系统组件
CAS服务器和客户端构成了CAS系统体系结构的两个物理组件,它们通过各种协议进行通信。
CAS服务器
CAS服务器是基于Spring Framework构建的Java servlet,其主要职责是通过签发和验证ticket来验证用户并授予对启用CAS认证了的服务(通常称为CAS客户端)的访问权限。当用户成功登录(即认证通过)时,CAS服务器会向用户签发TGT(Ticket Granting Ticket),并创建SSO会话。应用户的请求,通过使用TGT作为令牌的浏览器重定向,向启用CAS认证的服务签发ST(Service Ticket)。ST随后通过调用接口在CAS服务器上进行验证。这些交互作用在CAS协议文档中有详细描述。
CAS客户端
术语“CAS客户端”在其常见用法中有两个不同的含义。CAS客户端是任何启用CAS认证的应用,可通过支持的协议与CAS服务器通信。CAS客户端也是一个软件包,可以与各种软件平台和应用程序集成,以便通过某些身份验证协议(例如CAS、SAML、OAuth)与CAS服务器通信。CAS客户端支持多种软件平台和并且已经开发了很多产品。
【资料图】
CAS协议
CAS协议是一种简单而强大的基于票证(ticket)的协议。完整的协议规范可以查看这里。
它涉及一个或多个客户端和一个服务器。客户端嵌入在CAS化的(CASified)应用程序中(称为“CAS服务”),而CAS服务器则是一个独立的组件:
CAS服务器负责对用户进行身份验证并授予对应用程序的访问权限
CAS客户端保护CAS应用程序并从CAS服务器检索授权用户的身份。
关键概念:
TGT
(Ticket Granting Ticket), 存储在TGC
cookie中,为SSO(Single Sign On, 单点登录,)会话的Key,代表某个用户的某个SSO会话。TGC
(Ticket Granted Cookie),以TGT
为值的CookieST
(Service Ticket,服务票证), 作为GET
URL请求参数传输,表示由CAS服务器授予给特定用户对CAS服务的访问权限。
单点登录:指在多个应用系统中,只需登录一次,即可在多个应用系统之间共享登录。
协议版本
3.0.3
当前的CAS协议版本是“3.0.3”。协议规范说明可参考连接 https://apereo.github.io/cas/6.6.x/protocol/CAS-Protocol-Specification.html,由Apereo CAS服务实现,作为官方参考实现。在CAS协议“2.0”之上增加了最常见的增强功能。在其他功能中,版本“2.0”和“3.0”之间最引人注目的更新是能够通过新的/p3/serviceValidate
端点返回身份验证/用户属性。
2.0
协议规范说明,可参考连接 https://apereo.github.io/cas/6.6.x/protocol/CAS-Protocol-V2-Specification.html
Web流程图
过程详述
用户通过浏览器访问被保护的应用(暂且称之为 应用服务)
GET https://app.example.com/
应用服务上的CAS客户端检测到用户需要进行身份认证时,携应用返回302响应状态码,指示浏览器重定向到CAS服务器。
说明:CAS客户端包含一个
AuthenticationFilter
过滤器,该过滤器可以拦截所有的请求,用于判断用户是否需要通过Cas Server进行身份认证,如果需要则将跳转到CAS服务器登录页面,否则则请求会继续往下执行关键响应头
location: https://cas.example.com/cas/login?service=https%3A%2F%2Fapp.example.com%2F
其中,
service
指向用户原访问地址(注意,是经过URL编码后的地址)浏览器根据302响应状态码及响应头
location
指示,自动重定向访问CAS服务器。GET https://cas.example.com/cas/login?service=https%3A%2F%2Fapp.example.com%2F
CAS服务器未检测到SSO会话,向用户返回CAS登录表单页面。
用户手动输入正确用户名,密码等认证信息后,提交表单
POST https://cas.example.com/cas/login?service=https%3A%2F%2Fapp.example.com%2F
CAS服务器接收到用户名和密码后,对用户进行验证(可使用CAS服务器默认的验证,也可以自定义实现验证方法),如果验证通过,则创建SSO会话,签发一个
ST
(作为location请求中URL参数传输) , 返回302响应状态码,及location
请求头,提示浏览器重定向访问应用服务。关键响应头
Location: https://app.example.com/?ticket=ST-12345678Set-Cookie: CASTGC=TGT-2345678
说明:
Set-Cookie
响应头,提示浏览器存储Cookie--将TGT
(Ticket Granted Ticket)存储为CASTGC
Cookie值,这是单点登录的关键步骤,因为这样以后,当前浏览器中访问其它需要CAS认证的应用服务时,将自动携带CASTGC
Cookie重定向访问CAS服务器网站,而访问CAS服务器时,CAS服务会通过该Cookie值,即TGT
来查找对应的SSO会话,如果存在会话,则表示已登录CAS服务器,签发ST
, 返回302响应状态码,提示浏览器重定向访问应用服务,否则未登录,返回CAS服务器登录页。注意,
CASTGC
也可能被命名为其它类似名称,比如CASTGC-D
,如果有对CAS服务器进行相关改造的话。浏览器根据302响应状态码及响应头
location
指示,自动重定向访问 应用服务。GET https://app.example.com/?ticket=ST-12345678
应用服务收到请求后,请求CAS服务器服务验证接口,验证
ST
注意:每个
ST
只能用一次,且存在有效期,这就是为啥需要二次访问CAS服务器进行验证的原因。GET https://cas.example.com/serviceValidate?service=https%3A%2F%2Fapp.example.com%2F&ticket=ST-12345678
CAS服务器对
ST
进行验证,生成XML响应报文,返回给应用服务,该XML响应报文包含是包含是否验证成功、被认证的用户信息、可选属性。应用服务收到响应报文后,可根据CAS服务器验证结果,为当前用户生成会话,返回302响应状态码,
Set-Cookie
及location
响应头,提示浏览器存储会话Cookie,并再次通过重定向访问应用服务。关键响应头:
Set-Cookie: JSESSIONID=ABC1234567Location: https://app.example.com/
注意:上述
Location
中的URL,没有携带ticket
参数,避免长时间将ST
暴露在浏览器地址栏中用户浏览器收到响应后,根据提示重定向访问应用服务
GET https://app.example.com/Cookie: JSESSIONID=ABC1234567
应用服务收到上述请求后,验证会话Cookie,如果存在对应会话,则表示用户已登录,返回用户请求的资源
当用户第二次访问相同应用服务时,应用服务会再次验证会话Cookie,如果存在对应会话,则表示用户已登录,返回用户请求的资源
GET https://app.example.com/resourceCookie: JSESSIONID=ABC1234567
用户通过浏览器访问被保护的另一个应用(暂且称之为 应用服务2)
GET https://app2.example.com/
应用服务2上的CAS客户端检测到用户需要进行身份认证时,携应用返回302响应状态码,指示浏览器重定向到CAS服务器。
关键响应头
location: https://cas.example.com/cas/login?service=https%3A%2F%2Fapp2.example.com%2F
浏览器根据302响应状态码及响应头
location
指示,携CASTGC
Cookie自动重定向访问CAS服务器。GET https://cas.example.com/cas/login?service=https%3A%2F%2Fapp2.example.com%2FCookie: CASTGC=TGT-2345678
CAS服务器根据
CASTGC
检测是否已存在SSO会话,发现已存在对应会话(即无需CAS登录),签发一个ST
, 返回302响应状态码,及location
请求头,提示浏览器重定向访问应用服务。关键响应头
Location: https://app2.example.com/?ticket=ST-345678
浏览器根据302响应状态码及响应头
location
指示,自动重定向访问 应用服务2。GET https://app2.example.com/?ticket=ST-345678
应用服务2收到请求后,请求CAS服务器服务验证接口,验证
ST
GET https://cas.example.com/serviceValidate?service=https%3A%2F%2Fapp2.example.com%2F&ticket=ST-345678
CAS服务器对
ST
进行验证,生成XML响应报文,返回给应用服务,该XML响应报文包含是包含是否验证成功、被认证的用户信息、可选属性。应用服务2收到响应报文后,可根据CAS服务器验证结果,为当前用户生成会话,返回302响应状态码,
Set-Cookie
及location
响应头,提示浏览器存储会话Cookie,并再次通过重定向访问应用服务2。关键响应头:
Set-Cookie: MOD_AUTH_CAS_S=XYZ1234567Location: https://app.example.com/
注意:上述
Location
中的URL,没有携带ticket
参数,避免长时间将ST
暴露在浏览器地址栏中用户浏览器收到响应后,根据提示重定向访问应用服务2
GET https://app2.example.com/Cookie: MOD_AUTH_CAS_S=XYZ1234567
应用服务2收到上述请求后,验证会话Cookie,如果存在对应会话,则表示用户已登录,返回用户请求的资源
CAS单点登出(SLO,Single Logout )
单点登出(注销登录),意味着除了让CAS服务器自身SSO会话失效,还将使客户端应用会话失效,如果CAS客户端支持注销协议的话。
只要TGT过期,就会启动注销协议。
使用警告!
默认情况下,启用单点登出。
当CAS会话结束时,它会通知每个应用服务SSO会话不再有效,依赖方需要使自己的会话无效。记住,提交给每个CAS保护应用服务的回调仅是一个通知,没有别的了。应用程序需要拦截该通知,并通过特定端点手动或更常见的是通过支持SLO的CAS客户端类库正确销毁用户身份验证会话。
还要注意,由于SLO是一个全局事件,因此默认情况下,将联系具有CAS身份验证记录的所有应用程序,如果这些应用程序彼此不同,则可能会对用户体验造成负面影响。例如,如果用户已登录门户应用程序和电子邮件应用程序,则通过SLO注销其中一个应用程序也会破坏另一个的用户会话,如果应用程序没有仔细管理其会话和用户活动,这可能意味着数据丢失。
流程如下:
通过访问CAS服务器logout
API(如下),可以注销CAS登录。
https://cas.example.com/cas/logout
如果希望注销登录后,跳转到应用服务登录页,需要添加service
参数,并设置跳转目标URL,如下:
https://wcas.sit.sf-express.com/cas/logout?service=https%3A%2F%2Fcas.example.com%2Fcas%2Flogin%3F
参考连接
https://apereo.github.io/cas/6.6.x/planning/Architecture.html
https://apereo.github.io/cas/6.6.x/protocol/CAS-Protocol.html
https://apereo.github.io/cas/6.6.x/protocol/CAS-Protocol-Specification.html
https://cloud.tencent.com/developer/article/2141095
https://apereo.github.io/cas/6.6.x/installation/Logout-Single-Signout.html
关键词:
-
环球焦点!【全球新视野】今日热议:焦点快播:海通证券:货币紧缩政策边际放缓 贵金属有望迎来板块性投资机会 每日热门_焦点滚动_天天新要闻
智通财经APP获悉,海通证券发布研究报告称,5月的加息或是美联储最后一次加息,贵金属有望在货币紧缩政策边
来源: 网络基础 CAS协议学习总结_天天新资讯
环球观点:Git使用经验总结1
环球焦点!【全球新视野】今日热议:焦点快播:海通证券:货币紧缩政策边际放缓 贵金属有望迎来板块性投资机会 每日热门_焦点滚动_天天新要闻
AMD为ROG掌机定制Zen4+RDNA3神U:功耗只有9W!|环球百事通
【聚看点】华为严打App互相拉起!不整改者直接下线、上报工信部
第一次!嫦娥五号发现月球天然玻璃:建基地的好材料-天天热头条
特斯拉中国五一出行报告:百位车友日行千里 没有里程焦虑 天天快报
去哪里?阿斯报:布斯克茨预计在巴萨夺冠后宣布自己的未来-世界讯息
送电子书福利啦!|每日关注
美国统治全球48%半导体市场:研发投入占比2.5倍于中国
通讯!宝德暴芯x86处理器发布:百分百复刻Intel 10代酷睿
贾跃亭没忘记乐视!时隔6年 首次互动|环球微资讯
世界杯预选赛欧洲区第三轮德国主场被爆冷 当前快报
.NET 6学习笔记(8)生成自签证书
男子1天吃10顿暴瘦110斤:确诊为甲亢!医生科普
每日快看:董宇辉自曝曾抗拒卖货写检讨:一度撑不下去想放弃
每日信息:银河麒麟桌面系统升级V10 SP1 2303:固若金汤 真心好用!
当前视点!巴萨唯一爆点要走,5000万欧元违约金,让签约不要太容易
全球速讯:海康威视推双盘位NAS:1199元 最大40TB容量
因“挖呀挖”爆火美女老师身陷6大传闻:职业网红?一场直播打赏200多万?-天天要闻
三国志战略版象兵战法怎么样 三国志战略版象兵战法搭配
挂载NTFS分区,离线安装NTFS-3G(Linux挂载NTFS格式磁盘的方法)
《塞尔达传说:王国之泪》偷跑后:任天堂大规模“清理”Switch相关软件
腾势汽车五一出行报告:座椅零重力成最爱用智能功能 被使用84万次-世界最资讯
世界新动态:葱花饼怎样做好吃?
“秀色”可餐鲜花入馔有讲究 谨防过敏或中毒_每日快播
环球速看:治堵神器!比亚迪云巴在湖南大王山即将运营:串联十余处景点
广东强对流天气上线 多地暴雨大风:汕尾3小时倒水111.1毫米|世界微动态
对标华为昆仑!荣耀将推出巨犀玻璃面板:Magic4已提前用上
创维汽车黄宏生:盈亏平衡点是卖10万辆 明年实现
收购动视暴雪还有机会!微软聘请顶级反垄断律师对阵CMA 全球今头条
全球今头条!称比亚迪仰望U8原地掉头是欺骗大众 38万粉丝UP主道歉
1163 Dijkstra Sequence + 层序遍历 + 链式前向星_环球热点
马普龙霸王龙谁厉害_马普龙vs霸王龙 今日播报
《塞尔达传说:王国之泪》发售前惨遭偷跑!Epic:买不起可以玩《原神》
【天天时快讯】超越《复联》!《银河护卫队3》创漫威影史最高分
桥本环奈的影视剧_桥本环奈影视作品 焦点热闻
全球最新:女子深夜加班回家吃榴莲被丈夫指责 网友质疑摆拍:头顶长了摄像头
巴菲特看好微软:在收购动视暴雪上已经十分出色|全球信息
动态:又一新造车濒临倒闭:仅交付6台车 和富士康有关
全球今亮点!又一新势力车企申请破产 经销商曾集体维权称被坑几百万
近日择机发射!天舟六号船箭组合体转运至发射区_世界播资讯
这几类蔬菜或自带“毒素”,吃前必须焯水,有两种正当季-今日报
每日动态!【金融街发布】国家外汇管理局:4月末我国外储规模为32048亿美元 环比上升0.66%
【环球新要闻】国王杯冠军榜:巴萨31冠居首,皇马20冠排第三
世界动态:上海官方公布4月超速排行榜:第一名真能追高铁了 一秒67米
回忆杀!“品如的苹果手机怎么是翻盖的”引热议 网友又来考古
Linux驱动开发笔记(一):helloworld驱动源码编写、makefile编写以及驱动编译基本流程 当前速讯
视讯!OpenAI CLIP 关键点 - 连接图像和文字
宁德时代回应原材料价格下跌:不存在大幅减值风险
把苹果股票卖了!巴菲特:两年前犯过错 很愚蠢|世界快看
理想汽车:几万块营销预算李想亲自批 但安全方面预算不需要
关于Kubernetes-v1.23.6-初始化时报错[kubelet-check] It seems like the kubelet isn't runni
编程题库 - 基本运算 - 整数运算求两个整数相加之和
零营收药企密集IPO 估值成关注点
天天看点:iPhone 15 Pro Max机模上手:1.57mm超窄边框、Type-C接口
对于女大学生 一晚上最少多少钱
一夜爆红 湖北黄老师直播唱挖呀挖打赏不断 律师:或涉嫌侵权
每日关注!夏天必备 润本蚊香液3瓶+1器大促:到手14.9元
254TOPS算力!比亚迪新一代王朝、海洋系列要用NVIDIA Drive Orin芯片-天天快报
前沿热点:Win11精简版系统成功安装在4GB显存中:运行速度飞快!
微头条丨炉慈高速全线首座隧道双线提前贯通
【环球时快讯】侵害用户权益!工信部通报56款App:羊了个羊上榜
焦点快报!巴菲特股东大会!巴菲特:我们的火车还停留在19世纪末水平
学系统集成项目管理工程师(中项)系列18b_进度管理(下)-当前动态
世界快报:关于俞敏洪建议24节气都放假及俞敏洪建议24节气都放假详情
2、etcd单机部署和集群部署
网友逛鱼店惊喜偶遇鲨鱼产子过程:第一次见 很神奇
深圳一公司发布年薪50万岗位:优先录用李一桐粉丝
7人吃自助炫300多个螃蟹 医生:过量食用螃蟹或引发多种疾病|世界时讯
苹果别对iPhone 15 USB-C限速!不然欧盟不答应
加快摆脱中国供应链?库克:苹果接下来就靠印度了
什么是成本性态 什么是成本|世界热讯
爱成都迎大运宣传稿怎么画(爱成都迎大运宣传句)
咖啡色地板配什么颜色家具_咖啡色配什么颜色好看
网站被攻击了!!! 速递
老人推倒摩托车案执行款1.6万已到账 车主10个月维权结束:老人违法不该被宽恕
天天百事通!民呼我应|东门一市政路被“霸占”,官方回应来了
【环球新要闻】月嫂拍嗝时打盹致婴儿头顶骨骨折 平台:愿退还未完成的服务费
“挖呀挖呀挖”童谣为何火爆全网?专家解释原因_天天速看
全球今日报丨冷冻小龙虾怎么加热 冷冻小龙虾怎么加热才好吃
美股银行股周五为何大涨?没有空头想持仓过周末
天天速讯:中国特供 NVIDIA缩水版A800显卡遭哄抢:10万元也难买到
“投资界的春晚”要来了:巴菲特股东大会五大看点_世界微动态
老黄良心了 5000块的4060游戏本值得买吗?结论来了
复数的基本知识
最新快讯!关于学生五一前请假遭拒强行离校被处分及学生五一前请假遭拒强行离校被处分详情
广东小区业主私拆承重墙 多户搬离墙体开裂到14楼:网友吐槽是谋杀 希望严惩
5月价格继续涨 LCD面板不再亏本卖:75寸电视不到3000元
快播:“土味”出圈!济宁“90后”唢呐女博士背后的故事
最新消息:SQL 解析在 CloudQuery 中的应用
小红书布局AI大模型:上线AI绘画应用
旅客问路被工作人员怼回去多读书 车站回应:严肃处理|环球微速讯
天天视讯!航拍安徽岳西茭白田:满眼葱绿孕育生机
世界热点评!C#高级编程--反射与特性
88年后入土为安 云南禄劝隆重安葬21具红军烈士遗骸
新消息丨厂商为何要封杀32位APP?真实原因揭开
比商超便宜一半多!伊利巧乐兹大促:券后每支2.4元起
3090 Ti能抵7200元 iGame以旧换新7日开启:RTX 40显卡这下真的便宜了 天天视讯
焦点快播:1049元 创维推出新款23.8电竞显示器:165Hz Fast IPS屏