大厂面试真题-什么是CAS单点登录?什么原理
CAS(Central Authentication Service,中央认证服务)单点登录(SSO,Single Sign-On)的原理主要基于统一的认证机制和票据验证过程,使得用户只需在多个相互信任的应用系统中登录一次,即可访问所有这些系统。
CAS是一个开源的、企业级单点登录解决方案,它由耶鲁大学发起,旨在为Web应用系统提供一种可靠的单点登录方法。CAS在2004年12月正式成为JA-SIG(现在称为Apereo)的一个项目,并且一直在不断发展和完善。
CAS框架主要包括两个部分:CAS Server和CAS Client。
- CAS Server:这是一个需要独立部署的Web应用,主要负责完成对用户的认证工作。它会处理登录时的用户凭证(如用户名和密码)信息,这些信息可以从数据库、XML文件、LDAP服务器等多种来源检索。CAS Server在认证成功后,会生成一个唯一的、不可伪造的Service Ticket,并缓存以备将来验证。
- CAS Client:这部分负责与受保护的客户端应用部署在一起,以Filter方式保护受保护的资源。当有访问本地Web应用中受保护资源的请求,并且该请求需要身份认证时,CAS Client会检查Http请求中是否包含有效的Service Ticket。如果没有,它会将请求重定向到CAS Server进行认证。
CAS框架的优点包括:
- 提高用户效率:用户只需登录一次,即可访问所有相互信任的应用系统,无需记忆多个登录名和密码。
- 提高开发效率:开发人员在新建项目时,无需考虑开发用户体系,可以专注于业务逻辑的实现。
- 提高运维效率:运维人员无需维护管理多个用户账号表,简化了用户管理工作。
此外,CAS框架还提供了灵活的认证接口和可扩展性,支持多种客户端和认证方式。它已经成为许多企业业务整合的首选解决方案之一。
以下是CAS单点登录原理的详细解释:
一、CAS架构
CAS单点登录系统主要由CAS Server(认证服务器)和CAS Client(客户端应用)两部分组成:
- CAS Server:负责用户的认证工作,存储用户的认证信息,并生成和验证票据(Ticket)。
- CAS Client:需要接入CAS Server的应用系统,用户在访问这些系统时,若未认证,则会被重定向到CAS Server进行认证。
二、单点登录流程
- 用户首次访问CAS Client:
- 用户尝试访问某个CAS Client(如购物网站shopping.com)的受保护资源。
- CAS Client检查用户是否已认证(通常通过检查HTTP请求中是否携带了有效的票据或Cookie)。
- 如果用户未认证,CAS Client将用户重定向到CAS Server的登录页面。
- 用户登录CAS Server:
- 用户在CAS Server的登录页面输入用户名和密码。
- CAS Server验证用户名和密码的正确性。
- 如果验证成功,CAS Server会为用户生成一个全局的票据(如Ticket Granting Ticket, TGT),并在用户的浏览器中设置一个Ticket Granting Cookie(TGC)。
- 同时,CAS Server还会为用户生成一个针对当前CAS Client的访问票据(Service Ticket, ST),并将ST和TGC一起返回给用户浏览器。
- 用户访问CAS Client:
- 用户浏览器携带ST和TGC再次访问CAS Client。
- CAS Client将ST发送给CAS Server进行验证。
- CAS Server验证ST的有效性,并确认用户已认证且有权访问该CAS Client。
- 验证通过后,CAS Client为用户创建会话(Session),并允许用户访问受保护资源。
- 用户访问其他CAS Client:
- 当用户尝试访问另一个CAS Client(如支付网站pay.com)时,流程与首次访问类似。
- 但由于用户的浏览器中已存储了TGC,CAS Server可以通过TGC找到对应的TGT,从而无需用户再次输入用户名和密码即可为用户生成新的ST。
- 新生成的ST用于访问新的CAS Client,实现单点登录。
三、单点登录原理总结
CAS单点登录的原理主要基于以下几点:
- 统一的认证中心:CAS Server作为统一的认证中心,负责所有CAS Client的用户认证工作。
- 票据机制:通过TGT、TGC和ST等票据机制,实现用户认证状态的跨系统共享和验证。
- Cookie与Session结合:利用浏览器Cookie存储TGC,实现用户认证状态的持久化;在CAS Client端使用Session存储用户信息,实现用户会话管理。
- 重定向机制:通过重定向机制将用户引导至CAS Server进行认证,并将认证结果返回给CAS Client。
CAS单点登录的优点在于它实现了统一的认证管理,提高了用户体验和系统的安全性。同时,CAS Server可以集中管理用户的认证状态,提供了更好的管理性和可扩展性。
相关文章:
大厂面试真题-什么是CAS单点登录?什么原理
CAS(Central Authentication Service,中央认证服务)单点登录(SSO,Single Sign-On)的原理主要基于统一的认证机制和票据验证过程,使得用户只需在多个相互信任的应用系统中登录一次,即…...
用Java提取PDF表格到文本、CSV、Excel工作表
如何精准地提取PDF格式中嵌入的表格数据,并将其无缝转换为更加易于分析和操作的形式,如纯文本、CSV文件或Excel工作表,是一项重要的文档处理技巧。使用Java,我们可以简单地实现这一过程。本文将介绍如何利用Java从PDF文档提取表格…...
OpenCV视频I/O(10)视频采集类VideoCapture之从视频流中检索一帧图像函数 retrieve()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 解码并返回已抓取的视频帧。 cv::VideoCapture::retrieve() 是 VideoCapture 类的一个成员函数,用于从视频流中检索一帧图像。 retr…...
【RocketMQ】SpringBoot整合RocketMQ
🎯 导读:本文档详细介绍了如何在Spring Boot应用中集成Apache RocketMQ,并实现消息生产和消费功能。首先通过创建消息生产者项目,配置POM文件引入RocketMQ依赖,实现同步消息发送,并展示了如何发送普通字符串…...
mysql replace无法替换空格?如何解决
哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互…...
Redis篇(环境搭建)
目录 一、安装包 1. Windows版下载地址 2. Linux版下载地址 二、安装Redis 1. 在Linux中安装Redis 2. 在Windows中安装Redis 3. 细节问题 三、Redis服务启动 1. 默认启动 2. 指定配置启动 3. 开机自启 四、Redis服务停止 1. Linux系统中启动和停止Redis 2. Window…...
【C++题目】7.双指针_和为 s 的两个数字
文章目录 题目链接:题目描述:解法C 算法代码:图解 题目链接: LCR 179.查找总价格为目标值的两个商品 题目描述: 解法 解法一(暴力解法,会超时) 两层 for 循环列出所有两个数字的组合…...
网络通信1-传输层
tcp的三次握手: TCP(传输控制协议)的三次握手是建立一个可靠的连接的过程。这个过程中涉及到的主要参数包括: 序列号(Sequence Number, SEQ): 在第一次握手中,发起方(客户端…...
【JAVA源码授权】
悯农二首 代码混淆加密 Class 文件许可证管理数字签名API 调用限制防止反编译使用私有库法律保护动态授权 其一 春种一粒粟,秋收万颗子。 四海无闲田,农夫犹饿死。 其二 锄禾日当午,汗滴禾下土。 谁知盘中餐,粒粒皆辛苦 代码混淆 …...
tauri开发软件中,使用tauri自带的api用浏览器打开指定的url链接
有能力的可以看官方文档:shell | Tauri Apps 就是使用这个api来打开指定的url链接,要在tauri.config.json中配置打开这个api: 然后在前端页面中导入使用: import { open } from tauri-apps/api/shell; // opens the given URL o…...
OpenCV-图像拼接
文章目录 一、基本原理二、步骤三、代码实现1.定义函数2.读取图像3.图像配准(1).特征点检测(2).特征匹配 4.透视变换5.图像拼接 四、图像拼接的注意事项 图像拼接是一种将多张有重叠部分的图像合并成一张无缝的全景图或高分辨率图…...
C++【类和对象】(取地址运算符重载与实现Date类)
文章目录 取地址运算符重载const成员函数取地址运算符重载 Date类的实现Date.hDate.cpp1.检查日期合法性2. 构造函数/赋值运算符重载3.得到某月的天数4. Date类 - 天数的操作4.1 日期 天数4.2 日期 天数4.3 日期 - 天数4.4 日期 - 天数 5. Date的前后置/--5.1 前置5.2 后置5.…...
oracle 数据库中的异常和游标管理
异常和游标管理 游标: 用来查询数据库,获取记录集合(结果集)的指针,可以让开发者一次访问一行结果集,在每条结果集上作操作。 分类: 静态游标: 分为显式游标和隐式游标。 REF游标&…...
关于python 日志设定为INFO 但是DEBUG仍旧写入的问题
问题:将logging设定为了INFO级别,但是在打印的时候发现jieba包中的DEBUG级别的信息还是出现了。 原因:在我引用的包中,一些python文件也使用了logging,我设定的INFO级别只能设定我当前使用的文件,而调用的包…...
TypeScript 语法基础 第一部分 类型
【视频链接】尚硅谷TypeScript教程(李立超老师TS新课) TypeScript TypeScript 语法基础 第二部分 类、接口、泛型1. 类型1.1 | 联合类型1.2 字面量类型1.3 any 任意类型1.4 unkown 类型1.5 as 类型断言1.6 object 对象类型1.7 { } 对象类型1.8 ÿ…...
GO Serial 学习与使用
文章目录 主要特性安装基本用法配置选项错误处理其他功能 github.com/goburrow/serial 是一个 Go 包,提供了一种简单的方式来与串口进行交互。以下是该包的主要特性和用法的简要概述: 主要特性 跨平台支持:支持 Windows、macOS 和 Linux。简…...
安卓app开发系列之-常用工具与库
✨ 关于我 ✨ 👨💻 Hi there! 我是 [Jamson],一名热爱编程与技术的狂热者,致力于前后端的全栈独立软件系统开发。通过不断学习和实践,我希望将知识分享给更多的朋友们,和大家一起成长。 💡 &…...
视频汇聚EasyCVR视频监控平台调取接口提示“认证过期”是什么原因?
视频汇聚EasyCVR视频监控平台,作为一款智能视频监控综合管理平台,凭借其强大的视频融合汇聚能力和灵活的视频能力,在各行各业的应用中发挥着越来越重要的作用。EasyCVR平台具备强大的拓展性和灵活性,支持多种视频流的外部分发&…...
uniapp视频禁止用户推拽进度条并保留进度条显示的解决方法——方案二
在uniapp项目中,使用<video>组件播放视频非常方便。默认情况下,视频组件会显示进度条,用户可以随意拖动进度条来控制视频播放进度。然而,在某些特定场景,如在线教育、广告宣传等,我们希望禁止用户拖动…...
mysql复合查询 -- 多表查询(介绍,笛卡尔积,使用),自连接(介绍,使用)
目录 多表查询 介绍 使用 表数据 显示雇员名,雇员工资,以及所在部门名 显示部门号为10的部门名,员工名,工资 自连接 介绍 场景 表数据 题目 子查询 自连接 多表查询 介绍 实际开发中往往数据来自不同的表,所以需要多表查询 语法: from 表1,表2 (笛卡…...
UNet全维度改进模型库重磅发布
突破边界,赋能工业质检:UNet全维度改进模型库重磅发布 在工业缺陷检测领域,分割精度与效率的平衡始终是技术落地的核心命题。我们倾力打造**「UNet全维度改进模型库」,以37项原创性结构创新为引擎,深度融合注意力机制…...
告别文档迁移困境:3个关键场景解锁飞书文档批量备份新方案
告别文档迁移困境:3个关键场景解锁飞书文档批量备份新方案 【免费下载链接】feishu-doc-export 项目地址: https://gitcode.com/gh_mirrors/fe/feishu-doc-export 还在为团队协作平台切换带来的文档迁移难题而烦恼吗?当企业从飞书切换到其他办公…...
Phi-4-Reasoning-Vision实操手册:官方SYSTEM PROMPT精准适配教程
Phi-4-Reasoning-Vision实操手册:官方SYSTEM PROMPT精准适配教程 1. 工具概览 Phi-4-Reasoning-Vision是基于微软Phi-4-reasoning-vision-15B多模态大模型开发的高性能推理工具,专为双卡4090环境优化。这个工具严格遵循官方SYSTEM PROMPT规范ÿ…...
基于OpenStack的毕业设计:从零搭建私有云平台的入门实战与避坑指南
最近在帮学弟学妹们看毕业设计,发现不少同学对云计算方向很感兴趣,尤其是想用OpenStack做个私有云平台。但一上手就懵了,组件多、文档杂,环境动不动就崩,最后时间都花在折腾部署上了。我自己当初也踩过不少坑ÿ…...
2025年—ComfyUI面部与手部修复实战指南:从插件选择到模型优化
1. ComfyUI面部修复插件深度对比 在AI绘画领域,面部修复一直是让新手头疼的问题。相比WebUI的一键式ADetailer插件,ComfyUI需要更手动化的操作流程,但这反而让我们能更深入理解AI修复的底层逻辑。2025年最新版的ComfyUI中,有两个插…...
Realistic Vision V5.1 虚拟摄影棚面试实战:解析Java八股文中的系统设计题
Realistic Vision V5.1 虚拟摄影棚面试实战:解析Java八股文中的系统设计题 最近在帮朋友准备后端开发的面试,发现一个挺有意思的现象。大家聊起Java八股文,尤其是系统设计题,总觉得有点枯燥,像是在背标准答案。什么“…...
WuliArt Qwen-Image Turbo新手教程:Prompt怎么写?效果不好怎么调?
WuliArt Qwen-Image Turbo新手教程:Prompt怎么写?效果不好怎么调? 刚接触WuliArt Qwen-Image Turbo,是不是感觉有点懵?看着那个简洁的输入框,心里琢磨着:“我该写点啥才能让它画出我想要的图&a…...
医学影像处理实战:用Python实现Marching Cubes算法重建CT扫描数据
医学影像处理实战:用Python实现Marching Cubes算法重建CT扫描数据 在医学影像处理领域,三维重建技术正逐渐成为临床诊断和科研分析的重要工具。想象一下,当医生面对一堆二维CT切片时,如何快速构建出患者骨骼或器官的三维模型&…...
GLM-OCR公式识别效果展示:LaTeX格式精准渲染,学术党必备工具
GLM-OCR公式识别效果展示:LaTeX格式精准渲染,学术党必备工具 作为一名经常需要处理学术文献的研究人员,我深知公式识别的痛点。那些复杂的数学表达式,要么手动输入到LaTeX里费时费力,要么用传统OCR工具识别后变成一堆…...
勒索病毒突发中招?紧急处置+自救恢复全指南(2026实战版),收藏这篇就够了!
勒索病毒突发中招?紧急处置自救恢复全指南(2026实战版) “文件全被加密,桌面弹出勒索信,要求48小时内支付比特币赎金”——勒索病毒的突发性让无数个人用户和企业猝不及防。一旦中招,核心文件被锁、业务中…...
