【权限管理】CAS(Central Authentication Service)
CAS(Central Authentication Service)是一种广泛应用的 单点登录(SSO) 协议,它允许用户在一个集中式的身份验证系统中登录一次后,便可以无缝访问多个应用系统,而无需重复登录。CAS 通过统一的身份验证服务来简化多个应用之间的用户认证流程,提高了用户体验,并减少了管理多个用户凭证的复杂性。
1. CAS 单点登录工作原理
CAS 是一种基于 Web 的认证协议,通常包括以下几个核心组成部分:
- CAS 服务器:中央身份验证服务器,负责验证用户身份并为其发放票据(ticket)。
- CAS 客户端:集成到各个应用中的客户端,负责将用户请求重定向到 CAS 服务器进行认证,并验证 CAS 服务器返回的票据。
- 用户:进行认证并访问多个应用系统的终端用户。
- 票据:CAS 使用票据(Ticket)来管理认证信息,最常见的是 服务票据(Service Ticket) 和 登录票据(Login Ticket)。
2. CAS 单点登录的流程
2.1 用户访问应用系统(服务提供者)
- 用户试图访问某个受保护的应用(服务提供者,SP),但尚未进行身份验证。
- 应用检测到用户未登录,自动将用户重定向到 CAS 服务器。
2.2 重定向到 CAS 服务器
- 用户被重定向到 CAS 服务器,提示用户进行身份验证(通常是输入用户名和密码)。
- 用户输入凭证并提交给 CAS 服务器。
2.3 CAS 服务器进行身份验证
- CAS 服务器验证用户凭证。如果凭证有效,CAS 服务器创建一个登录票据(TGT,Ticket Granting Ticket)并返回给用户的浏览器。
- 该登录票据通常保存在浏览器的 cookie 中,用于后续的认证请求。
2.4 用户重定向回应用系统(服务提供者)
- CAS 服务器生成一个 服务票据(Service Ticket,ST),并将用户重定向回原先的应用系统(SP),同时附带这个 服务票据(ST)。
- 应用系统接收到请求后,使用 服务票据(ST) 向 CAS 服务器请求验证,CAS 服务器确认票据有效后,返回用户的身份信息。
2.5 服务提供者验证服务票据
- 服务提供者通过向 CAS 服务器验证服务票据来确认用户身份。若票据有效,CAS 服务器返回包含用户身份信息的响应。
- 应用系统根据返回的身份信息建立用户会话,允许用户访问资源。
2.6 后续请求
- 一旦用户成功登录,用户的会话将在浏览器中保存,并且其他应用系统会识别该会话,从而不再要求用户重复登录。
3. CAS 协议的关键点
- 单点登录:用户只需登录一次,便可以访问多个应用系统。无论用户访问多少个受保护的应用系统,CAS 只会要求用户在首次访问时进行身份验证,后续的访问都会凭借已获得的服务票据来认证。
- 票据机制:CAS 使用票据(Ticket)来实现无状态的认证。服务票据(ST)是应用系统与 CAS 服务器之间验证用户身份的桥梁。
- 用户体验:CAS 提供统一的登录界面,用户只需要记住一个用户名和密码即可登录所有集成的应用系统。
- 跨域认证:CAS 支持跨域认证,用户可以在不同的应用系统之间无缝切换,而不需要重新登录。
4. CAS 的优缺点
优点:
- 统一管理:集中式认证可以简化用户管理和权限管理,提高系统的安全性。
- 用户体验:减少了用户在多个系统间跳转时重复登录的麻烦,提供无缝的体验。
- 支持多应用:CAS 可以集成到多个应用中,支持跨域的单点登录。
- 开放标准:CAS 是一种开放协议,支持不同平台的实现,可以与多种技术栈兼容。
- 可扩展性:CAS 服务器支持多种扩展功能,如 LDAP 集成、两步验证、身份同步等。
缺点:
- 性能瓶颈:CAS 服务器可能成为瓶颈,所有的认证请求都必须通过 CAS 服务器处理,导致它需要较高的负载和高可用性。
- 单点故障:如果 CAS 服务器出现故障,所有的认证请求都会失败,导致无法登录任何应用系统。
- 复杂的配置:集成 CAS 到多个应用中需要一定的配置工作,尤其是当应用系统复杂或采用不同技术栈时。
5. CAS 实现与集成
CAS 协议通常有多种实现,其中最著名的是 Jasig CAS,它是一个开源项目,提供了完整的 CAS 服务器和客户端的实现。
5.1 CAS 服务器
- Jasig CAS Server:最常用的 CAS 服务器实现,提供集中式的身份验证服务,可以部署在自己的服务器上。
- CAS 服务器的配置:通常需要配置认证方式(如 LDAP、数据库、CAS 票据存储等)和应用系统的集成。
5.2 CAS 客户端
每个应用系统需要集成 CAS 客户端,以便能够重定向用户到 CAS 服务器进行身份验证。常见的客户端实现包括:
- Java 客户端:在 Java 应用中,CAS 客户端库(如
cas-client-java
)用于与 CAS 服务器进行交互,验证服务票据。 - Spring Security:Spring Security 提供了 CAS 集成,允许基于 Spring 构建的应用系统与 CAS 协议集成。
- 其他技术栈客户端:如 Node.js、PHP 等平台上也有相应的 CAS 客户端实现,可以集成到各种类型的 Web 应用中。
6. CAS 安全性
- 加密:服务票据(ST)和登录票据(TGT)通常是通过加密技术保护的,以防止被篡改。
- HTTPS:CAS 协议需要通过 HTTPS 进行传输,确保敏感数据(如凭证和票据)在网络传输过程中不会被窃取。
- 会话管理:CAS 服务器会管理用户会话,一旦用户注销或会话过期,所有应用系统的访问权限也会被撤销。
7. 应用场景
- 企业应用:许多企业需要为员工提供访问多个内部应用(如人力资源管理系统、财务系统等)的单点登录服务,CAS 是理想的解决方案。
- 教育系统:学校和教育机构可以使用 CAS 来提供一个集中认证的系统,简化学生、教师和管理员的认证流程。
- 政府系统:对于需要集中管理的多部门系统,CAS 可以提供统一的认证平台,简化身份验证管理。
- 大型 Web 应用:对于包含多个 Web 应用(如门户网站、子系统等)的组织,CAS 提供了无缝的身份验证和权限控制。
总结
CAS 单点登录是一个非常强大的认证协议,能够简化多应用、多系统环境中的用户身份验证流程。它通过集中式的身份验证服务提供无缝的用户体验,但也需要合理的架构设计和高可用性保障。CAS 是企业、教育和其他需要集中认证管理的大型系统的理想选择。
相关文章:
【权限管理】CAS(Central Authentication Service)
CAS(Central Authentication Service)是一种广泛应用的 单点登录(SSO) 协议,它允许用户在一个集中式的身份验证系统中登录一次后,便可以无缝访问多个应用系统,而无需重复登录。CAS 通过统一的身…...

Golang笔记:使用net包进行TCP监听回环测试
文章目录 前言TCP监听回环代码演示 附:UDP监听回环 前言 TCP是比较基础常用的网络通讯方式,这篇文章将使用Go语言实现TCP监听回环测试。 本文中使用 Packet Sender 工具进行测试,其官网地址如下: https://packetsender.com/ TC…...

《浮岛风云》V1.0中文学习版
《浮岛风云》中文版https://pan.xunlei.com/s/VODadt0vSGdbrVOBEsW9Xx8iA1?pwdy7c3# 一款有着类似暗黑破坏神的战斗系统、类似最终幻想的奇幻世界和100%可破坏体素环境的动作冒险RPG。...

Day10——爬虫
爬虫概念 网络请求 爬虫分类 基本流程 请求头...
10. C语言 函数详解
本章目录: 前言1. C 语言函数概述1.1 函数的定义与结构1.2 函数声明1.3 函数调用 2. 函数参数传递2.1 传值调用2.2 传引用调用(模拟)2.3 引用调用(C 特性) 3. 内部函数与外部函数3.1 内部函数3.2 外部函数3.3 示例:多个…...

NRC优先级中比较特殊的—NRC0x13和NRC0x31
1、基础知识 大家都了解 NRC0x13,表示长度错误和格式错误 NRC0x31,表示DID不支持和数据格式不支持 2、为什么说这两个NRC比较特殊 看下图的标注部分: 2.1、先看NRC0x13 步骤一:仔细看是先判断Minmun Length Check ࿰…...
ref() 和 reactive() 区别
ref() 和 reactive() 都是 Vue 3 中用于创建响应式数据的方法,但它们之间存在一些关键差异。 首先,ref() 用于创建响应式的标量值,比如数字、字符串、布尔值等基本数据类型,以及对象和数组等复杂数据类型。当你使用 ref() 时&…...

深度学习与计算机视觉 (博士)
文章目录 零、计算机视觉概述一、深度学习相关概念1.学习率η2.batchsize和epoch3.端到端(End-to-End)、序列到序列(Seq-to-Seq)4.消融实验5.学习方式6.监督学习的方式(1)有监督学习(2)强监督学习(3)弱监督学习(4)半监督学习(5)自监督学习(6)无监督学习(7)总结:不同…...

Sprint Boot教程之五十:Spring Boot JpaRepository 示例
Spring Boot JpaRepository 示例 Spring Boot建立在 Spring 之上,包含 Spring 的所有功能。由于其快速的生产就绪环境,使开发人员能够直接专注于逻辑,而不必费力配置和设置,因此如今它正成为开发人员的最爱。Spring Boot 是一个基…...

NaVILA:用于足式机器人导航的VLA模型
论文地址:https://navila-bot.github.io/static/navila_paper.pdf 项目地址:https://navila-bot.github.io/ 本文提出了一种名为NaVILA的机器人导航模型,旨在解决视觉语言导航问题,并允许机器人在更具挑战性和杂乱的场景中进行导…...

大语言模型提示技巧(七)-扩展
扩展是将较短的文本,例如一组提示或主题列表,输入到大型语言模型中,让模型生成更长的文本。我们可以利用这个特性让大语言模型生成基于某个主题的电子邮件或小论文。通过这种方式使用大语言模型,可以为工作与生活提供诸多便利&…...

基类指针指向派生类对象,基类指针的首地址永远指向子类从基类继承的基类首地址
文章目录 基类指针指向派生类对象,基类指针的首地址永远指向子类从基类继承的基类起始地址。代码代码2 基类指针指向派生类对象,基类指针的首地址永远指向子类从基类继承的基类起始地址。 代码 #include <iostream> using namespace std;class b…...

25年01月HarmonyOS应用基础认证最新题库
判断题 “一次开发,多端部署”指的是一个工程,一次开发上架,多端按需部署。为了实现这一目的,HarmonyOS提供了多端开发环境,多端开发能力以及多端分发机制。 答案:正确 《鸿蒙生态应用开发白皮书》全面阐释…...

wps宏js接入AI功能和接入翻译功能
wps的js越来越强大了,很实用的功能,爱了 表格wps js接入AI 表格wps js接入翻译功能,自定义翻译语言和目标语言...

【Logstash03】企业级日志分析系统ELK之Logstash 过滤 Filter 插件
Logstash 过滤 Filter 插件 数据从源传输到存储库的过程中,Logstash 过滤器能够解析各个事件,识别已命名的字段以构建结构, 并将它们转换成通用格式,以便进行更强大的分析和实现商业价值。 Logstash 能够动态地转换和解析数据&a…...
深度学习:Java DL4J基于RNN构建智能停车管理模型
### 深度学习:Java DL4J基于RNN构建智能停车管理模型 #### 引言 随着城市化进程的加速,停车问题日益成为城市管理的难点和痛点。传统的停车场管理方式效率低下,导致停车场资源无法得到充分利用,车主停车体验差。为了解决这些痛点…...

花生好坏缺陷识别数据集,7262张图片,支持yolo,coco json,pasical voc xml格式的标注,识别准确率在95.7%
花生好坏缺陷识别数据集,7262张图片,支持yolo,coco json,pasical voc xml格式的标注,识别准确率在95.7% 数据集分割 训练组87% 6353图片 有效集8% 606图片 测试集4% 303图片 预处理 自动定…...
2025年:AI化浪潮中的社会变迁与商业革新
随着人工智能(AI)技术的迅猛发展,2025年将成为一个转折点。这一年,AI不仅将深入到日常生活和商业运营的各个角落,还将引发一系列深刻的社会、经济和技术变革。以下是对未来一年可能出现的“AI化”现象的预测与展望。 AI进入主流文化的标志 超级碗广告:在2025年的超级碗上…...

filebeat、kafka
elk的架构 es数据库:非关系型数据库,json格式 logstash:收集日志 kibana:图形化的工具 ↓ 以上三种结合起来即为日志收集系统 filebeat 作用:filebeat是一款轻量级的日志收集工具,不依赖java环境&…...

js单例模式
保证一个类只有一个实例,并提供一个访问它的全局访问点 实现 静态方法实现 class SingleTon{//全局的访问点static getInstance(){// 保证一个类只有一个实例if(!this.instance){this.instancenew SingleTon()}return this.instance}}let aSingleTon.getInstance()let bSing…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...

莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...

关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...

云安全与网络安全:核心区别与协同作用解析
在数字化转型的浪潮中,云安全与网络安全作为信息安全的两大支柱,常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异,并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全:聚焦于保…...

李沐--动手学深度学习--GRU
1.GRU从零开始实现 #9.1.2GRU从零开始实现 import torch from torch import nn from d2l import torch as d2l#首先读取 8.5节中使用的时间机器数据集 batch_size,num_steps 32,35 train_iter,vocab d2l.load_data_time_machine(batch_size,num_steps) #初始化模型参数 def …...

Ray框架:分布式AI训练与调参实践
Ray框架:分布式AI训练与调参实践 系统化学习人工智能网站(收藏):https://www.captainbed.cn/flu 文章目录 Ray框架:分布式AI训练与调参实践摘要引言框架架构解析1. 核心组件设计2. 关键技术实现2.1 动态资源调度2.2 …...

以太网PHY布局布线指南
1. 简介 对于以太网布局布线遵循以下准则很重要,因为这将有助于减少信号发射,最大程度地减少噪声,确保器件作用,最大程度地减少泄漏并提高信号质量。 2. PHY设计准则 2.1 DRC错误检查 首先检查DRC规则是否设置正确,然…...