当前位置: 首页 > 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…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

【iOS】 Block再学习

iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...