【知识科普】统一身份认证CAS

什么是CAS

    • 综合概述
      • 一、CAS概述
      • 二、CAS的组成与工作原理
      • 三、CAS的特性与支持
      • 四、CAS的应用场景
    • 示例展示
      • 场景设定
      • CAS认证过程
    • 其他认证细节
      • CAS认证过程的细节
      • CAS认证过程的特性
    • 参考文献

综合概述

统一身份认证CAS(Central Authentication Service),即中央认证服务,是由耶鲁大学发起的一个企业级开源项目。它是一个用于身份验证的开源框架,为Web应用系统提供了一种可靠的SSO(单点登录)解决方案。以下是对统一身份认证CAS的详细解析:

一、CAS概述

CAS主要用于为Web应用程序创建和维护单点登录会话,采用Java语言编写,使用Apache-2.0协议。它提供了一个安全可靠的方式来验证用户的身份,并且可以集成到各种Web应用程序中。通过CAS,用户可以在多个应用系统之间共享登录状态,只需登录一次,即可在多个应用系统之间自由切换,大大提高了用户的使用体验和便利性。

二、CAS的组成与工作原理

CAS由CAS Server和CAS Client两部分组成:

  1. CAS Server:单点验证服务器,负责验证用户的身份,并生成会话令牌。该令牌可以由其他应用程序用于验证用户的身份。
  2. CAS Client:共享CAS Server登录态的客户端。当用户通过浏览器访问CAS Client提供的服务资源时,CAS Client会判断用户是否已登录。若未登录,则会将用户重定向到CAS Server进行身份验证。

CAS的工作原理如下:
cas-seq

    1. 用户通过浏览器访问CAS Client的某个服务资源。
    1. CAS Client判断用户需要进行身份认证时,会携带service参数(指向用户原访问的页面)返回302状态码,指示浏览器重定向到CAS Server。
    1. 浏览器携带service参数重定向到CAS Server。
    1. CAS Server获取并校验用户cookie中携带的TGC(Ticket Granting Cookie)。若成功,则身份认证成功;否则,将用户重定向到CAS Server提供的登录页面,由用户输入用户名、密码进行身份验证。
    1. 若用户之前已登录过系统,CAS Server可以获取用户的TGC,并根据TGC获取TGT(Ticket Granting Ticket)。若用户首次登录,则CAS Server会首先生成TGT。每次验证时,CAS Server会根据TGT签发一个ST(Service Ticket),然后把ST拼接到service中,同时将相应的TGC设置到用户cookie中,并返回302状态码,指示浏览器重定向到service。
    1. 浏览器存储TGC,并携带ST重定向到service。
    1. CAS Client取得ST后,会向CAS Server请求验证该ST的有效性。
    1. 若CAS Server验证该ST有效,则告知CAS Client该用户有效,并返回用户信息。CAS Client获取用户信息后,可以使用session的形式管理用户会话。后续的交互请求无需再重定向到CAS Server,CAS Client直接返回用户请求的资源即可。

三、CAS的特性与支持

CAS构建于Spring Boot或Spring Cloud之上,支持多种协议和身份验证机制。其主要特性包括:

  1. 支持CAS v1、v2和v3协议,以及SAML v1和v2协议、OAuth v2协议、OpenID & OpenID Connect协议等。
  2. 支持通过JAAS、LDAP、RDBMS、X.509、Radius、SPNEGO、JWT、Remote、Trusted、BASIC、Apache Shiro、MongoDb、Pac4J等组件进行身份验证。
  3. 支持将身份验证委派至WS-FED、Facebook、Twitter、SAML IdP、OpenID、OpenID Connect、CAS等服务来完成。
  4. 支持通过ABAC、Time/Date、REST、Internet2的Grouper等进行授权控制。
  5. 支持通过Hazelcast、Ehcache、JPA、Memcached、Apache Ignite、MongoDb、Redis、DynamoDb、Couchbase等工具进行HA集群部署。
  6. 借助JSON、LDAP、YAML、JPA、Couchbase、MongoDb、DynamoDb、Redis等工具支持的应用程序注册。
  7. 支持通过Duo Security、YubiKey、RSA、Google Authenticator等进行多因子身份验证。

四、CAS的应用场景

CAS广泛应用于需要实现单点登录、统一身份认证和权限管理的场景中。例如:

  1. 统一身份认证:CAS可以集中管理多个应用的身份认证,用户只需登录一次,就可以在所有应用中共享登录状态。
  2. 单点登录:CAS可以实现单点登录功能,用户在一次登录后,在其他应用中自动登录。
  3. 多系统权限控制:CAS可以集中管理用户的权限信息,实现对多个系统的统一权限控制。
  4. 多系统用户管理:CAS可以集中管理用户信息,包括用户的基本信息、角色和权限等。
  5. 跨域认证:CAS可以实现跨域认证功能,允许不同域名的应用之间共享用户登录状态。
  6. 多租户应用:CAS可以支持多租户应用场景,通过配置不同的租户标识来实现不同租户之间的身份认证和权限控制。

综上所述,统一身份认证CAS作为一种高效、安全的身份验证框架,在企业级应用中具有广泛的应用前景和重要的价值。

示例展示

以下是一个实际的例子,用于说明CAS(Central Authentication Service)的认证过程:

场景设定

假设有一个大学,其内部有多个Web应用系统,如人事系统、研究生系统、科研系统等。这些系统需要实现单点登录,即用户只需在一个系统中登录一次,就可以在其他系统中自由切换而无需再次登录。为了实现这一目标,大学决定采用CAS作为统一身份认证解决方案。

CAS认证过程

  1. 用户访问系统

用户通过浏览器访问其中一个系统,如研究生系统(graduate.example.edu)。此时,系统检测到用户未登录,因此需要进行身份认证。

  1. 重定向到CAS Server

研究生系统(CAS Client)将用户重定向到CAS Server(如cas.example.edu)进行登录。重定向时,会携带一个service参数,该参数指向用户原访问的页面(即研究生系统的某个页面)。

  1. CAS Server身份认证

    • 用户到达CAS Server的登录页面,输入用户名和密码进行登录。
    • CAS Server验证用户的用户名和密码。如果验证成功,CAS Server会生成一个TGT(Ticket Granting Ticket)和一个TGC(Ticket Granting Cookie)。TGT是用户的认证票根,包含用户的认证身份、有效期等信息,并存储在CAS Server中。TGC则存储在用户的浏览器中,用于后续的身份验证。
  2. 生成ST并重定向回系统

    • CAS Server根据TGT生成一个ST(Service Ticket),这是一个一次性票据,用于CAS Client与CAS Server之间的交互。
    • CAS Server将ST拼接到service参数中,并将TGC设置到用户的cookie中。然后,CAS Server将用户重定向回原访问的页面(即研究生系统的某个页面),同时携带ST作为参数。
  3. CAS Client验证ST

    • 研究生系统(CAS Client)取得ST后,会向CAS Server请求验证该ST的有效性。
    • CAS Server验证ST的有效性。如果验证成功,CAS Server会告知研究生系统该用户有效,并返回用户信息(如学号、姓名等)。
  4. 用户会话管理

    • 研究生系统获取用户信息后,可以使用session的形式管理用户会话。后续的交互请求无需再重定向到CAS Server,研究生系统直接返回用户请求的资源即可。
    • 如果用户后续访问其他系统(如人事系统、科研系统等),这些系统也会进行类似的认证过程。但由于用户已经在CAS Server上登录过,因此这些系统可以直接通过CAS Server验证用户的身份,而无需用户再次输入用户名和密码。
  5. 单点注销

    • 当用户在一个系统中注销时(如研究生系统),该系统会通知CAS Server用户已注销。
    • CAS Server会删除与该用户相关的TGT和TGC。
    • 同时,CAS Server会通知所有已登录过的系统(如人事系统、科研系统等),要求它们也注销该用户的会话。
    • 这样,用户在其他系统中的会话也会被销毁,实现单点注销的功能。

通过以上步骤,CAS实现了在多个Web应用系统之间的单点登录和统一身份认证。用户只需在一个系统中登录一次,就可以在其他系统中自由切换而无需再次登录。同时,CAS还提供了单点注销的功能,确保用户在一个系统中注销后,在其他系统中的会话也会被销毁。

其他认证细节

CAS认证过程的细节

  1. 协议与认证机制

    CAS支持多种协议和认证机制,包括CAS协议本身、OAuth、SAML等。这使得CAS可以与各种不同的Web应用程序集成,实现单点登录的功能。在认证过程中,CAS会根据用户的选择和系统的配置,采用相应的协议和认证机制进行身份验证。

  2. 票据的管理与验证

    CAS使用票据(Ticket)来管理用户的认证状态和授权信息。票据包括TGT(Ticket Granting Ticket)和ST(Service Ticket)两种。TGT是用户的认证票根,存储在CAS Server中,用于生成ST和验证用户的身份。ST是一次性票据,用于CAS Client与CAS Server之间的交互,验证用户的授权状态。在认证过程中,CAS Server会生成并管理这些票据,确保它们的安全性和有效性。

  3. 会话管理

    CAS实现了会话管理的功能,用于跟踪用户的登录状态和会话信息。当用户登录时,CAS Server会创建一个会话,并生成相应的TGT和TGC。在后续的请求中,CAS Client会使用TGC来查找相应的TGT,从而验证用户的身份和授权状态。同时,CAS还支持会话超时、会话固定等安全特性,确保用户会话的安全性和稳定性。

  4. 多因素认证

    为了提高安全性,CAS还支持多因素认证。多因素认证是指除了用户名和密码之外,还需要用户提供其他形式的认证信息(如手机验证码、指纹识别等)才能登录系统。这可以有效防止恶意攻击和未经授权的访问。

  5. 部署与配置

    CAS的部署和配置相对简单。它可以基于Spring Boot或Spring Cloud等框架进行构建和部署,支持多种数据库和缓存技术。同时,CAS还提供了丰富的配置选项和API接口,方便用户根据实际需求进行定制和扩展。

CAS认证过程的特性

  1. 可靠性

    CAS作为一个企业级开源项目,经过了多年的发展和完善,已经成为了一种可靠的SSO解决方案。它采用了多种安全技术和机制,确保用户身份的安全性和认证过程的可靠性。

  2. 灵活性

    CAS支持多种协议和认证机制,可以与各种不同的Web应用程序集成。同时,它还提供了丰富的配置选项和API接口,方便用户根据实际需求进行定制和扩展。这使得CAS具有很高的灵活性和可扩展性。

  3. 易用性

    CAS的部署和配置相对简单,用户可以通过简单的配置和部署即可实现单点登录的功能。同时,CAS还提供了友好的用户界面和操作指南,方便用户进行使用和管理。

  4. 安全性

    CAS采用了多种安全技术和机制来确保用户身份的安全性和认证过程的可靠性。它支持多因素认证、会话管理、数据加密等安全特性,可以有效防止恶意攻击和未经授权的访问。

综上所述,CAS认证过程是一个复杂而精细的过程,它涉及多个组件和步骤的协同工作。通过采用多种安全技术和机制,CAS确保了用户身份的安全性和认证过程的可靠性。同时,CAS还支持多种协议和认证机制、具有灵活性和可扩展性、易用性和安全性等特点,使得它成为了一种广泛应用的SSO解决方案。

参考文献

小白也能看懂的OAuth2讲解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/19246.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

计算机网络-MSTP工作原理

前面大致学习了MSTP基础概念与组成,今天来了解MSTP的工作原理。 一、MSTP拓扑计算: MSTP可以将整个二层网络划分为多个MST域,各个域之间通过计算生成CST,域内生成IST,CST和IST构成了整个交换设备网络的CIST。 域内还可…

面试题:Kafka(一)

1. Kafka如何保证消息不丢失 生产者发送消息到Brocker丢失 设置异步发送 消息重试 消息在Brocker中存储丢失 发送确认机制acks 消费者从Brocker接收消息丢失 Kafka 中的分区机制指的是将每个主题划分成多个分区(Partition)topic分区中消息只能由消费者…

odoo 创建应用

1、通过手脚架命令创建文件结构&#xff08;完全可以手动一个个文件/文件夹建&#xff09; odoo-bin scaffold <模块名> <模块放置路径> 在odoo根目录路径执行命令行&#xff1a;./odoo-bin scaffold my_library exte_addons 执行结果&#xff1a; 参考文章&…

十四、SpringMVC的执行流程

文章目录 1. SpringMVC常用组件2. DispatcherServlet初始化过程3. DispatcherServlet调用组件处理请求4. SpringMVC的执行流程 1. SpringMVC常用组件 2. DispatcherServlet初始化过程 3. DispatcherServlet调用组件处理请求 4. SpringMVC的执行流程

java基础概念30:常见API-System

一、System工具类的常用方法 System也是一个工具类&#xff0c;提供了一些与系统相关的方法。 计算机的时间原点:1970年1月1日0:0:0&#xff0c;我国在东八区&#xff0c;有8小时时差。 二、常用方法说明 2-1、System.exit()方法 该方法用于终止当前运行的Java虚拟机&#x…

基于AOA算术优化的KNN数据聚类算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于AOA算术优化的KNN数据聚类算法matlab仿真。通过AOA优化算法&#xff0c;搜索最优的几个特征数据&#xff0c;进行KNN聚类&#xff0c;同时对比不同个数特征下…

三维测量与建模笔记 - 点特征提取 - 4.3 Harris特征点

在3D重建应用中&#xff0c;很重要的一个场景是找到两幅图像中的同名特征点&#xff0c;这个过程需要对特征点进行提取和描述。 从上面描述可以看出&#xff0c;如果窗口处于颜色变化不明显或者没有变化的区域&#xff0c;E的值很小或为0&#xff1b;如果窗口处于边缘位置&…

labview使用报表工具从数据库导出数据

之前写了一篇labview从数据库导出数据到excel电子表格&#xff0c;但是是基于调用excel的activeX控件&#xff0c;有时候会有一些bug&#xff0c;就比如我工作机就无法显示方法&#xff0c;后面大哥指点才知道没有的原因是excel安装不完整。像我的工作机就没有这个选项。就需要…

WIFI-TTL透传模块说明书

WIFI-TTL透传模块说明书 V 1.0 2022-11-24 目录 1 简介... 4 2 模块参数... 4 3 接口定义... 5 4 设备配网... 6 5 AT指令... 11 6 恢复出厂... 12 7 设备配置... 13 7.1 配置界面说明... 13 7.2 TTL串口配置... 13 7.3 …

基于YOLOv8深度学习的智慧交通非机动车驾驶员头盔佩戴检测系统

随着智慧交通系统的快速发展和城市交通的日益复杂化&#xff0c;非机动车驾驶员的安全问题引起了广泛关注&#xff0c;尤其在发生交通事故时&#xff0c;佩戴头盔作为基础的保护措施&#xff0c;能够有效降低头部受伤的风险&#xff0c;保障非机动车驾驶员的生命安全。然而&…

Flutter踩坑:原生安卓页面向Flutter通信

Flutter踩坑&#xff1a;原生安卓页面向Flutter通信 前言 在 Flutter APP 的开发过程中&#xff0c;有时不仅需要使用 Flutter 提供的组件&#xff0c;还需要使用原生的组件。 例如在对接外部 SDK 时&#xff0c;如果自己重新实现 SDK 的逻辑&#xff0c;无疑是本末倒置。 前…

w043基于springboot的“衣依”服装销售平台的设计与实现

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0…

【计算机网络安全】湖北大学-mysql事务隔离性实验

参考数据库实验&#xff1a;并发控制实验&#xff08;MySQL&#xff09;-CSDN博客&#xff0c;大佬写的很好 实验环境 实验需要mysql环境&#xff0c;如果我们本机有mysql客户端&#xff0c;或者安装过phpstudy都可以直接用&#xff0c;Kali似乎也有。 本机启动phpstudy&…

UE5 猎户座漂浮小岛 08 构造脚本

视频教程 90后小陈老师的个人空间-90后小陈老师个人主页-哔哩哔哩视频 1.构造脚本 1.1 简介 类似构造函数代码创建多个效率高 1.2 添加静态网格体 1.3 散乱立方体 使用for循环生产10个立方体 随机位置生成10个散乱的立方体 1.4 整齐立方体 1.5 随机物体 1.6 样条实现曲度墙…

OpenHarmony-2.DeviceInfo适配

DeviceInfo适配说明 1.启动子系统设备信息说明 2.OHOS 2.1.OHOS 固定值参数适配 OHOS 固定值参数: const.ohos.version.security_patch const.ohos.releasetype const.ohos.apiversion const.ohos.fullname适配说明&#xff1a; OHOS 固定值参数由OHOS系统填充&#xff0…

【电机控制】数学——微分

【电机控制】数学——微分 文章目录 [TOC](文章目录) 前言一、导数二、梯度三、▽算子四、散度四、旋度五、积规则a.函数求导1、函数之和求导2、函数与常数求导3、两个函数乘积求导4、一个函数除以一个函数求导 b.矢量函数求导1.构造标量2.构造矢量 c.梯度求导d.散度求导e.旋度…

day04(单片机高级)硬件基础

目录 硬件基础 初级硬件工程师 中级硬件工程师 高级硬件工程师 需要学习的知识点 硬件基础 初级硬件工程师 了解数字电路、模拟电路知识&#xff0c;熟悉常用电子元器件的性能原理&#xff1b; 熟悉PCB设计流程和规范&#xff08;华为&#xff09;&#xff0c;熟悉Altium Desig…

Nginx 使用入门介绍

大家好&#xff0c;我是G探险者&#xff01; 今天聊一聊nginx. Nginx 是一款高性能的 Web 服务器、反向代理服务器以及负载均衡器。它因其轻量级、稳定性和高并发处理能力&#xff0c;在全球范围内得到了广泛应用。许多大型网站&#xff08;如 Netflix、Dropbox 和 WordPress…

停车场空位引导系统

随着城市化进程的加速和汽车保有量的持续增长&#xff0c;传统停车场面临着前所未有的压力。在这些停车场中&#xff0c;停车困难与寻找自己的停车位麻烦复杂已成为许多驾驶者日常出行的一大痛点。 一.传统停车场痛点 在传统停车场中&#xff0c;车位难找&#xff0c;停车场缺…

([LeetCode仓颉解题报告] 661. 图片平滑器

[LeetCode仓颉解题报告] 661. 图片平滑器 一、 题目1. 题目描述2. 原题链接 二、 解题报告1. 思路分析2. 复杂度分析3. 代码实现 三、 本题小结四、 参考链接 一、 题目 1. 题目描述 2. 原题链接 链接: 661. 图片平滑器 二、 解题报告 1. 思路分析 由于只需要3*39个格子&am…