统一身份认证服务(CAS)系统实现SSO认识

news2024/9/27 2:31:30

一、前言

在这里插入图片描述
CAS(Central Authentication Service)即中央认证服务,是 Yale 大学发起的一个企业级开源项目,旨在为 Web 应用系统提供一种可靠的 SSO 解决方案,它是一个企业级的开源单点认证登录解决方案,采用java语言编写,使用Apache-2.0协议,主要用于为Web应用程序创建和维护单点登录会话。它提供了一个安全可靠的方式来验证用户的身份,并且可以集成到各种Web应用程序中。CAS提供了多种认证机制,包括基于令牌的认证、基于密码的认证和多因素认证等。此外,它还支持多种协议,如CAS、OAuth、SAML等,这使得它可以与各种不同的Web应用程序集成。目前,GitHub上显示最新版为v7.0.6。

在这里插入图片描述

在单点登录(SSO)环境中,CAS充当了一个中心认证服务器,负责验证用户的身份,并生成会话令牌,该令牌可以由其他应用程序用于验证用户的身份。这样,用户只需要在一个应用程序中登录,就可以在其他应用程序中无缝地访问,而无需再次输入用户名和密码。

关联资源:CAS Gitee项目、CAS GitHub、官网、 Apereo Foundation、cas相关博客、版本发布里程碑、版本发布和下载、CAS本地构建指导、Troubleshooting、cas-initializr 官方的war生成管理工具、配置参考

二、CAS产品原理及特性

2.1、CAS工作原理

在这里插入图片描述
上图为官网的架构,可看出CAS系统由2个组件: CAS server和 clients组成;其中,CAS server是基于Spring Framework构建的Java servlet(JavaWeb中基于spring部署在Servlet容器中的一个应用),CAS的核心是一个基于Java的web应用程序;CAS负责颁发和验证票证来验证用户并对支持CAS的服务(通常称为CAS客户端)授权访问。当服务器成功登录后向用户发出授权的票证(TGT)时,会创建一个SSO会话。之后,那些用户通过浏览器发出的请求服务所需要的**服务票证(ST)**就会被重定向到TGT,从而用它来作为token通过浏览器向CAS server后端完成验证ST。

CAS client 有2种含义,除了官方的client组件,还泛指所有支持cas的服务应用,只要能通过cas支持的协议 (e.g. CAS, SAML, OAuth).与CAS server能通信就算,常见有:Apache httpd Server (mod_auth_cas module)、Java (Java CAS Client)、NET (.NET CAS Client)、Python (pycas)、Ruby (rubycas-client),它更像是指一个诸如向Java CAS客户端之类的集成组件集。
在这里插入图片描述
如上所示,CAS的工作原理如下:

  • 1、当用户通过浏览器访问A系统统提供的服务资源时,首先验证用户是否登录,否则就会由后端服务(cas client)重定向到用户登录界面,而该登录界面的认证服务会重定向用户请求到 CAS Server 服务器
  • 2、用户在浏览器输入认证信息,发送给cas server验证授权票证,同时会为登录成功的用户创建一个会话并颁发一个随机的 Service Ticket ,该会话携带的TGT就是用户当前所请求服务的ST;
  • 3、然后,之后所有的请求服务都使用该ST来向cas服务进行票证验证合法性,通过后就授权给当前用户访问权限,返回用户所请求的资源/服务的请求应答。

对于访问受保护资源的每个 Web 请求, CAS Client 会分析该请求的 Http 请求中是否包含 Service Ticket。如果没有,则说明当前用户尚未登录,于是将请求重定向到指定好的 CAS Server 登录地址,并传递 Service (也就是要访问的目的资源地址),以便登录成功过后转回该地址。
在这里插入图片描述

2.2、CAS特性

在这里插入图片描述

CAS 构建于 Spring Boot 或 Spring Cloud之上,支持以下特性:

  • CAS v1, v2 和 v3 协议
  • SAML v1 和 v2 协议
  • OAuth v2 协议
  • OpenID & OpenID Connect 协议
  • WS-Federation 被动请求者协议
  • 通过 JAAS, LDAP, RDBMS, X.509, Radius, SPNEGO, JWT, Remote, Trusted, BASIC, Apache Shiro, MongoDb, Pac4J 等组件进行身份验证
  • 将身份验证委派至 WS-FED, Facebook, Twitter, SAML IdP, OpenID, OpenID Connect, CAS 等服务来完成;
  • 通过 ABAC, Time/Date, REST, Internet2 的 Grouper 等进行身份验证
  • 通过 Hazelcast, Ehcache, JPA, Memcached, Apache Ignite, MongoDb, Redis, DynamoDb, Couchbase 等工具进行 HA 集群部署
  • 借助JSON, LDAP, YAML, JPA, Couchbase, MongoDb, DynamoDb, Redis 等工具支持的应用程序注册
  • 通过 Duo Security, YubiKey, RSA, Google Authenticator 等进行多因子身份验证
  • 用于管理日志记录、监控、统计、配置和客户端注册等的管理 UI
  • 密码管理和密码策略实施
  • 支持基于Apache Tomcat, Jetty, Undertow, packaged 或Docker containers方式进行部署

2.3、部署前准备

  • CAS大版本依赖JDK 21,一般只有大版本升级时才会涉及到JDK的变动
  • 选一个你熟悉的servlet containers,对此官方并没有特别指定,最常用莫过Tomcat了,推荐选择嵌入式servlet容器进行部署
  • WAR Overlay来打一个war包
  • 联网更好:因为构建时可自动下载诸如WAR Overlay和线上仓库总的一些依赖库
  • 至少双核 3.00Ghz CPU + 4GB 内存
  • 软件获取:官网声明,请勿直接克隆或下载CAS代码库。除非你想为项目开发贡献代码,推荐采用 WAR Overlay 模式部署

三、部署和配置

也可直接参看SpringBoot 实现CAS Server统一登录认证

完成后,就可访问本地tomcat服务http://localhost:8080/cas就能看到登录页面了,默认的账密为:casuser/Mellon,该密码的配置在如下目录内WEB-INF\classes\application.properties;如下所示:
在这里插入图片描述

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

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

相关文章

netty编程之UDP

写在前面 源码 。 UDP,user datagram protocol,是internet协议簇中无连接的传输协议,因为无连接所以相比于TCP需要维护更少的信息以及网络交互,所以具有更高的效率。本文看下netty是如何实现的,和TCP方式差别不大,下面…

【宝马中国-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

Java使用EasyExcel导出图片(原比例大小)到Excel中

EasyExcel导出图片 又开始写Excel导出的需求了,哈哈哈…… 目前的需求是将图表分析对的饼图和折线图,也就是一张完整的图片单独导出到Excel中 为了方便客户在业务报告时,可以使用数据分析图片,从而更清晰准确地展示数据趋势 因…

【C++学习笔记】数据类型与运算符(一)

目录 一、常量与变量 1.1 常量 字面常量 符号常量 1.2 变量 1.3 标识符命名规范 二、数据类型 2.1 整型 2.2 实型(浮点型) 2.3 字符型 2.4 字符串 2.5 布尔型 三、cin控制台输入 3.1 输入代码 3.2 解决输入中文乱码 四、运算符 4.1 算术…

OpenCV杂项图像变换(1)自适应阈值处理函数adaptiveThreshold()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 函数对数组应用自适应阈值。 该函数根据以下公式将灰度图像转换为二值图像: 对于 THRESH_BINARY: t e x t d s t ( x , y ) { maxV…

# NLP-transformer学习:(5)Bert 实战

NLP-transformer学习:(5)模型训练和预测 基于 NLP-transformer学习:(2,3,4),这里对transformer 更近一步,学习尝试使用其中的bert 文章目录 NLP-transformer学习:&#x…

在 Debian 上安装 IntelliJ IDEA 笔记

在 Debian💩 上安装 IntelliJ IDEA 💡 笔记 下载安装 JDK17安装 IntelliJ IDEA Community添加创建桌面启动项(快捷方式) 参考资料 下载 两个包已经下好了,一个JDK17,一个IntelliJ IDEA Community 使用 wge…

【Liunx入门】Liunx软件包管理器

文章目录 前言一、什么是软件包二、网络相关指令三、Ubuntu包管理软件apt1.查看软件包2.sudo权限3.软件安装4.卸载软件5.软件更新6.升级软件包 总结 前言 Linux软件包管理器是Linux系统中用于安装、升级和卸载软件包的工具。它们提供了一个方便的方式来管理软件包,…

c++习题25-大整数加法

目录 一,题目 二,思路 三,代码 一,题目 描述 求两个不超过200位的非负整数的和。 输入 有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。 输出 一行,即相加后的结果。结果里不…

Physics of Language Models学习小结

1.概述 Physics of Language Models 参考:https://zhuanlan.zhihu.com/p/711391378 这是一系列论文和一个新的LLM研究方向,官网的概述如下。 苹果掉落,盒子移动,但重力和惯性等普遍规律对技术进步至关重要。虽然GPT-5或LLaMA-…

Threejs学习-三维坐标系、相机控件

坐标系: Three.js 使用的是右手坐标系,x 轴朝右,y 轴朝上,z 轴朝向自己。 相机控件轨道控制器 相机控件OrbitControls 通过相机控件OrbitControls实现旋转缩放预览效果。 // 设置相机控件轨道控制器OrbitControls const contr…

fastjson漏洞分析与复现

一、基础知识 Fastjson介绍: fastjson是阿里巴巴开源的JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。即fastjson的主要功能就是将Java Bean序列化成JSON字…

IDEA插件支持API调试、接口用例支持一键同步API变更,MeterSphere开源持续测试工具v3.2.0版本发布

2024年8月26日,MeterSphere开源持续测试工具正式发布v3.2.0版本。 在这一版本中,接口测试方面,MeterSphere API Debugger插件支持API调试,接口用例支持一键同步API变更;测试管理方面,在“测试用例”模块中…

牛客笔试训练

牛客.过桥 在函数 public static int n;public static int[]arrnew int[2001];public static int bfs(){int left1;int right1;int ret0;while(left<right){ret;int rright;for(int ileft;i<right;i){rMath.max(r,arr[i]i);if(r>n){return ret;}}leftright1;rightr;}…

网络原理 TCP与UDP协议

博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:MySQL数据库 JavaEE专栏:JavaEE 关注博主带你了解更多数据结构知识 1.应用层 之前编写完了基本的 java socket &#xff0c;要知道&#xff0c;我们之前所写的所有代码都在应⽤层&#xff0c;都是为了 完成某项…

关键点检测——HRNet源码解析篇

&#x1f34a;作者简介&#xff1a;秃头小苏&#xff0c;致力于用最通俗的语言描述问题 &#x1f34a;专栏推荐&#xff1a;深度学习网络原理与实战 &#x1f34a;近期目标&#xff1a;写好专栏的每一篇文章 &#x1f34a;支持小苏&#xff1a;点赞&#x1f44d;&#x1f3fc;、…

linux下部署数据库总结

数据库 数据库主要分为两大类&#xff1a;关系型数据库与 NoSQL 数据库 关系型数据库&#xff0c;是建立在关系模型基础上的数据库&#xff0c;其借助于集合代数等数学概念和方法来处理数据库 中的数据主流的 MySQL、Oracle、MS SQL Server 和 DB2 都属于这类传统数据库。 NoSQ…

JVM理论篇(一)

一、类加载子系统 1.1 类加载子系统作用 类加载子系统负责从文件系统或者网络中加载Class文件&#xff0c;Class文件在文件开头有特定的文件标识。(CAFEBABE)ClassLoader只负责class文件的加载&#xff0c;至于它是否可以运行&#xff0c;则由Execution Engine 执行引擎决定。…

Spire.PDF for .NET【文档操作】演示:创建标记的 PDF 文档

带标签的 PDF&#xff08;也称为 PDF/UA&#xff09;是一种包含底层标签树&#xff08;类似于 HTML&#xff09;的 PDF&#xff0c;用于定义文档的结构。这些标签可以帮助屏幕阅读器浏览整个文档而不会丢失任何信息。本文介绍如何使用Spire.PDF for .NET在 C# 和 VB.NET 中从头…

Python中csv文件的操作3

在《Python中csv文件的操作2》中提到&#xff0c;with as语句可以自动关闭文件&#xff0c;而该语句可以和csv模块中的函数配合使用&#xff0c;达到读取和写入csv文件的目的。 1 csv文件的读取 使用csv模块中的函数读取csv文件的代码如图1所示。 图1 使用csv模块中的函数读取…