当前位置: 首页 > news >正文

【权限管理】CAS(Central Authentication Service)

CASCentral 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 的优缺点

优点:
  1. 统一管理:集中式认证可以简化用户管理和权限管理,提高系统的安全性。
  2. 用户体验:减少了用户在多个系统间跳转时重复登录的麻烦,提供无缝的体验。
  3. 支持多应用:CAS 可以集成到多个应用中,支持跨域的单点登录。
  4. 开放标准:CAS 是一种开放协议,支持不同平台的实现,可以与多种技术栈兼容。
  5. 可扩展性:CAS 服务器支持多种扩展功能,如 LDAP 集成、两步验证、身份同步等。
缺点:
  1. 性能瓶颈:CAS 服务器可能成为瓶颈,所有的认证请求都必须通过 CAS 服务器处理,导致它需要较高的负载和高可用性。
  2. 单点故障:如果 CAS 服务器出现故障,所有的认证请求都会失败,导致无法登录任何应用系统。
  3. 复杂的配置:集成 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 &#xff0…...

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的机器人导航模型,旨在解决视觉语言导航问题,并允许机器人在更具挑战性和杂乱的场景中进行导…...

大语言模型提示技巧(七)-扩展

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

基类指针指向派生类对象,基类指针的首地址永远指向子类从基类继承的基类首地址

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

25年01月HarmonyOS应用基础认证最新题库

判断题 “一次开发&#xff0c;多端部署”指的是一个工程&#xff0c;一次开发上架&#xff0c;多端按需部署。为了实现这一目的&#xff0c;HarmonyOS提供了多端开发环境&#xff0c;多端开发能力以及多端分发机制。 答案&#xff1a;正确 《鸿蒙生态应用开发白皮书》全面阐释…...

wps宏js接入AI功能和接入翻译功能

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

【Logstash03】企业级日志分析系统ELK之Logstash 过滤 Filter 插件

Logstash 过滤 Filter 插件 数据从源传输到存储库的过程中&#xff0c;Logstash 过滤器能够解析各个事件&#xff0c;识别已命名的字段以构建结构&#xff0c; 并将它们转换成通用格式&#xff0c;以便进行更强大的分析和实现商业价值。 Logstash 能够动态地转换和解析数据&a…...

深度学习:Java DL4J基于RNN构建智能停车管理模型

### 深度学习&#xff1a;Java DL4J基于RNN构建智能停车管理模型 #### 引言 随着城市化进程的加速&#xff0c;停车问题日益成为城市管理的难点和痛点。传统的停车场管理方式效率低下&#xff0c;导致停车场资源无法得到充分利用&#xff0c;车主停车体验差。为了解决这些痛点…...

花生好坏缺陷识别数据集,7262张图片,支持yolo,coco json,pasical voc xml格式的标注,识别准确率在95.7%

花生好坏缺陷识别数据集,7262张图片&#xff0c;支持yolo&#xff0c;coco json&#xff0c;pasical voc xml格式的标注&#xff0c;识别准确率在95.7% 数据集分割 训练组87&#xff05; 6353图片 有效集8% 606图片 测试集4% 303图片 预处理 自动定…...

2025年:AI化浪潮中的社会变迁与商业革新

随着人工智能(AI)技术的迅猛发展,2025年将成为一个转折点。这一年,AI不仅将深入到日常生活和商业运营的各个角落,还将引发一系列深刻的社会、经济和技术变革。以下是对未来一年可能出现的“AI化”现象的预测与展望。 AI进入主流文化的标志 超级碗广告:在2025年的超级碗上…...

filebeat、kafka

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

js单例模式

保证一个类只有一个实例,并提供一个访问它的全局访问点 实现 静态方法实现 class SingleTon{//全局的访问点static getInstance(){// 保证一个类只有一个实例if(!this.instance){this.instancenew SingleTon()}return this.instance}}let aSingleTon.getInstance()let bSing…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...

Docker拉取MySQL后数据库连接失败的解决方案

在使用Docker部署MySQL时&#xff0c;拉取并启动容器后&#xff0c;有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致&#xff0c;包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因&#xff0c;并提供解决方案。 一、确认MySQL容器的运行状态 …...