CAS6.2.x ~ 准备(1)

2023-05-16

前言

CAS 企业单点登录,目前最新版本是6.2.x 。


Apereo 的 Central Authentication Service,通常称为CAS。CAS是用于web的企业多语言单点登录解决方案,并试图成为满足您的身份验证和授权需求的综合平台。
CAS是一个开放的、文档完善的认证协议。该协议的主要实现是托管在这里的同名开源Java服务器组件,它支持大量额外的身份验证协议和特性。
以下内容概述了CAS项目的特点和技术:

  • Spring Webflow/Spring Boot Java server component.
  • Pluggable authentication support (LDAP, Database, X.509, SPNEGO, JAAS, JWT, RADIUS, MongoDb, etc)
  • Support for multiple protocols (CAS, SAML, WS-Federation, OAuth2, OpenID, OpenID Connect, REST)
  • Support for multifactor authentication via a variety of providers (Duo Security, FIDO U2F, YubiKey, Google Authenticator, Authy, Acceptto, etc.)
  • Support for delegated authentication to external providers such as ADFS, Facebook, Twitter, SAML2 IdPs, etc.
  • Built-in support for password management, notifications, terms of use and impersonation.
    Support for attribute release including user consent.
  • Monitor and track application behavior, statistics and logs in real time.
  • Manage and register client applications and services with specific authentication policies.
  • Cross-platform client support (Java, .Net, PHP, Perl, Apache, etc).
  • Integrations with InCommon, Box, Office365, ServiceNow, Salesforce, Workday, WebAdvisor, Drupal, Blackboard, Moodle, Google Apps, etc.

CAS体系结构(Architecture)

CAS体系结构

系统组件(System Components)

CAS服务端和客户端组成了CAS系统体系结构的两个物理组件,它们通过各种协议进行通信。

CAS服务端(CAS Server)

CAS服务端是构建在Spring框架上的Java servlet,它的主要职责是通过发出和验证票据来认证用户和授予对启用了CAS的服务(通常称为CAS客户端)的访问权。当服务端在用户成功登录时向其发出票据授予票据ticket-granting ticket(TGT)时,将创建一个SSO会话。服务票据service ticket(ST)是根据用户的请求通过浏览器重定向使用TGT作为令牌向服务发出的。随后,通过反向通道通信,在CAS服务器上验证ST。这些相互作用在CAS 协议文档中有详细的描述。

CAS客户端(CAS Clients)

术语“CAS Clients”在其常用用法中有两种不同的含义。一种是指任何支持cas的应用程序,它可以通过受支持的协议与服务器通信。另一种含义是一个软件包,它可以与各种软件平台和应用程序集成,以便通过一些认证协议(例如CAS、SAML、OAuth)与CAS服务器通信。它支持的平台如下:

  • Apache httpd Server (mod_auth_cas module)
  • Java (Java CAS Client)
  • .NET (.NET CAS Client)
  • PHP (phpCAS)
  • Perl (PerlCAS)
  • Python (pycas)
  • Ruby (rubycas-client)

支持的协议(Supported Protocols)

客户端通过几种受支持的协议中的任何一种与服务器通信。所有受支持的协议在概念上是相似的,但是有些协议具有使其适合特定应用程序或用例的特性或特征。例如,CAS协议支持委托(代理)身份验证,SAML协议支持属性释放和单点签出。支持的协议如下:

  • CAS (versions 1, 2, and 3)
  • SAML 1.1 and 2
  • OpenID Connect
  • OpenID
  • OAuth 2.0
  • WS Federation

软件组件(Software Components)

用三个分层的子系统来描述CAS服务器是有好处的:

  • Web (Spring MVC/Spring Webflow)
  • Ticketing
  • Authentication

几乎所有的部署考虑和组件配置都涉及到这三个子系统。Web层是与所有外部系统(包括CAS客户端)通信的端点。Web层委托票务(Ticketing)子系统为CAS客户端访问生成票务。SSO会话在成功的身份验证上开始TGT的签发,因此票据子系统经常委托给身份验证(Authentication)子系统。

Spring Framework

CAS使用了Spring框架的许多方面;最明显的是Spring MVC和Spring Webflow。Spring为核心CAS代码库和部署人员提供了一个完整的可扩展框架;通过连接CAS和Spring API扩展点,可以很容易地定制或扩展CAS行为。Spring的一般知识有助于理解一些框架组件之间的相互作用,但这并不是严格要求的。

Spring Boot

CAS还很大程度上基于Spring Boot,这使它能够对Spring平台和第三方库有自己的看法,从而创建一个独立的web应用程序,而不需要尽可能多地进行XML配置。Spring Boot允许CAS隐藏其组件及其配置的许多内部复杂性,而提供自动配置模块,这些模块可以简单地自动配置正在运行的应用程序上下文,而不需要太多的人工干预。

安装CAS Server

官网推荐使用WAR Overlay的方式来安装Cas Server。需求如下:

  • JDK 11,推荐使用开源的OpenJDK,注意Oracle JDK需要付费
  • Servlet 容器,推荐使用Tomcat 9.xx
  • 构建工具,Gradle 6.x (可不用单独安装,软件中已自动提供)
  • Git (可选)

开发工具推荐使用 IntelliJ IDEA,本系列文章演示的命令都是在windows下。

下载

git clone -b 6.2.1 https://github.com/apereo/cas-overlay-template.git

构建

使用 IntelliJ IDEA打开下载好的项目,使用如下命令构建:

gradlew clean build

解压并暴露出内部资源文件

gradlew explodeWar

添加模块

CAS模块可以在build.gradle文件的依赖项dependencies块下指定。

dependencies {
    compile "org.apereo.cas:cas-server-some-module:${project.casVersion}"
    ...
}

运行和部署

可执行WAR

gradlew run
gradlew debug
gradlew clean executable

部署在外部容器

将cas.war文件部署到一个Servelt容器如Tomcat。

Docker

gradlew build jibDockerBuild
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CAS6.2.x ~ 准备(1) 的相关文章

  • H3C认证网络工程师(H3CNE)

    H3C认证网络工程师 H3CNE 1 sysname 更改系统名 2 display clock 显示系统时间 3 clock datetime 修改系统时间 4 display cur 显示当前运行的配置 5 save 保存配置 6 re
  • centos增加一个新磁盘

    1 在CAS或VMWARE等虚拟化平台里为虚拟机增加一个新磁盘 2 使用lsblk查看系统中是否有新增的硬盘 xff0c 如果没有 xff0c 重启一下系统就可以了 3 分区 xff1a fdisk dev sdb 按照提示输入m调出菜单
  • cas下linux虚拟机在线扩容磁盘

    cas下linux在线扩容磁盘 xff1a 1 修改虚拟机配置 xff0c 扩大需要扩容的磁盘 xff0c 然后以root进入系统 xff0c lsblk查看扩容的空间 2 使用growpart扩展分区 root 64 zgy growpa
  • 堆叠+链路聚合+OSPF

    1 配置IRF堆叠 swa inter range ten gig1 0 49 to ten gig1 0 52 shutdown swa irf port 1 1 port group inter ten gig 1 0 49 port
  • 正则表达式基础语法例子

    literal 功能 xff1a 匹配文本字符串的字面值 literal 例子 xff1a foo re1 re2 功能 xff1a 匹配正则表达式 re1 或者 re2 例子 xff1a foo bar 功能 xff1a 匹配任何字符 除
  • ubuntu升级python3.5到python3.10

    wget https www python org ftp python 3 10 0 Python 3 10 0 tgz tar zxvf Python 3 10 0 tgz cd Python 3 10 0 configure conf
  • CAS5.3单点登录(二)连接mysql数据库

    上一章说cas服务器中的登录帐号名是配置中写死的 xff0c 实际情况中不太可能仅有一个用户 xff0c 而是将所有用户存在一个数据库表中 xff0c 以便对登录帐号进行增删改的处理 本章就来讲述如何配置cas连接数据库 xff08 一 x
  • 【Python】argparse模块详解

    Python argparse模块详解 argparse 是一个用来解析命令行参数的 Python 库 xff0c 它是 Python 标准库的一部分 基于 python 2 7 的 stdlib 代码 argparse 模块使编写用户友好
  • 车辆路径问题与相关算法总结

    车辆路径优化是解决物流中运输环节效率问题的方案和方法 最近在学习车辆路径优化问题 xff0c 这个问题虽然很普遍 xff0c 但是没有一篇文章能够让我对问题有个全面的了解 xff0c 尤其是解决方法 xff0c 需要查阅很多论文才能整理全
  • 蓝桥杯51单片机学习——keil的工程创建的基本操作(通俗易懂)

    1 创建项目文件夹 2 选择编程的硬件 51一般选择atml 中的 89c52 即可 3 新建编程文件 4 编程文件关联 然后选择刚刚创建的编程文件 xff08 一定要是 xff1a 后缀为 c xff09 5 编译下载 xff08 一般用
  • ioS开发--Warning警告处理

    去除警告的方法 xff1a code class cpp span class hljs preprocessor span class hljs keyword pragma span clang diagnostic push span
  • Java -- 抽象类

    抽象类 xff1a 包含抽象方法类 xff0c 叫抽象类 没有方法体的方法 xff0c 叫抽象方法 关键字 abstract 抽象方法 xff1a 权限修饰符 abstract 返回值 方法名 形参列表 例如 xff1a public ab
  • 利用Winsock实现UDP通信

    UDP通信的C语言实现 UDP通信的定义Winsock用于通信的结构体服务端socket建立服务端程序源码用户端socket建立用户端程序源码信息的接收与发送UDP通信的特点 UDP通信的定义 Internet 协议集支持一个无连接的传输协
  • C++的string类型中关于append函数、push_back函数和+=运算符的区别

    append 43 61 push back全字符串 xff08 string xff09 部分字符串 xff08 substring xff09 字符数组 xff08 char array xff09 单个字符 xff08 char xf
  • 深度学习中查看显卡使用情况

    命令 xff1a nvidia smi 功能 xff1a 显示服务器上的GPU的情况 命令 xff1a nvidia smi l 功能 xff1a 定时更新显示服务器上的GPU的情况 命令 xff1a watch n 3 nvidia sm
  • Shell脚本入门(一)--- 变量赋值、调取、echo$计算

    Shell脚本入门 xff08 一 xff09 文章目录 Shell脚本入门 xff08 一 xff09 64 toc shell 脚本变量赋值echo 计算 作业 xff1a 获取主机基本信息及分区使用率 shell 脚本 shell 变
  • C和C++中 struct的区别

    1 xff1a C 43 43 中不需要加struct就可以定义变量 xff0c 而c需要加struct 2 xff1a C 43 43 结构体内部可以使用函数
  • C和C++的const

    1 C语言的const修饰的变量都有空间 xff0c 全局的在常量区 xff0c 局部的在栈区 xff1b 2 C语言的const修饰的全局变量具有外部链接属性 xff0c extern const int a xff1b 即可使用 xff

随机推荐

  • 连接SSH失败的原因以及方法

    一 检查用户名密码 连接失败时可以先检查验证信息 xff0c 步骤如下 xff1a 1 运行软件 xff0c 在会话管理中找到连接失败的会话 右键单击会话名 xff0c 点击属性 图1 xff1a 查看属性 2 在弹出的对话框点击用户身份验
  • 虚地址空间

  • tensorflow2.0 学习笔记-利用tf.data.Dataset API读取numpy array文件

    tensorflow2 0 学习笔记 数据读取1 利用tf data Dataset API读取numpy array文件读取numpy array数据 利用tf data Dataset API读取numpy array文件 读取nump
  • matplotlib绘图中文乱码问题--解决方案(Windows)

    最近使用python绘图时 xff0c 出现中文乱码问题 xff0c 结合在网上搜索理解后 xff0c 按照如下步骤 xff0c 成功解决 解决方案 xff1a 步骤一 xff1a 找到Mircosoft YaHei UI字体文件 一般 在
  • Python数据分析之--运动员数据揭秘(一)

    在网易云课堂看了城市数据团的课程 xff0c 对理解利用pytthon进行数据分析的基本流程很有帮助 xff0c 因此进行复盘总结 xff0c 加深自己的理解 xff0c 巩固相关操作 分析资料及工具 xff1a Spyder Python
  • 缓慢变化维

    一 什么是缓慢变化维 xff1f 缓慢变化维 xff08 Slowly Changing Dimensions SCD xff09 它的提出是因为在现实世界中 xff0c 维度的属性并不是静态的 xff0c 它会随着时间的流失发生缓慢的变化
  • 一个小例子带你入门-Tableau

    声明 xff1a 本文是学习W3Cschool教程整理所得 xff0c 非原创 xff0c 原文链接 xff1a W3Cschool 创建任何Tableau数据分析报告涉及三个基本步骤 连接到数据源 它涉及定位数据并使用适当类型的连接来读取
  • SQL 必知必会--函数篇

    对SQL的基础函数做复习回顾 xff0c 本篇涉及的函数知识如下 xff1a 好了 xff0c 下面开始复习 xff1a SQL Aggregate 函数计算从列中取得的值 xff0c 返回一个单一的 值 Max 函数 作用 xff1a 返
  • WPS的Linux Mint版(Ubuntu)提示“系统缺失字体”的解决方法

    wps的Linux Mint版 Ubuntu 版安装成功后 xff0c 可能每次启动的时候都会提示 xff1a 系统缺失字体 xff0c 如图 xff1a 解决方法 1 首先下载字体包并解压 链接 https pan baidu com s
  • SQL必知必会--中级篇(二)

    接上一篇SQL必知必会 中级篇 xff08 一 xff09 xff0c 继续对sql知识进行整理复习 本篇包含知识点如图 xff1a 一 SQL 约束 用于规定表中的数据规 则 xff1b 如果存在违反约束的数据行为 xff0c 行为会被约
  • 静态网页个人简历

    程序员的简历是不用随身带的 首先 xff0c 作为程序员自己的简历是比别人特别的 xff1b 程序员应该是有思想 xff0c 有高情商的手工艺人 作为程序员简历是随身带的代码 xff0c 用代码书写的简历就像是一份随身携带着的简历 xff0
  • CMake之CMakeLists.txt编写入门

    自定义变量 主要有隐式定义和显式定义两种 隐式定义的一个例子是PROJECT指令 xff0c 它会隐式的定义 lt projectname gt BINARY DIR和 lt projectname gt SOURCE DIR两个变量 xf
  • 照相机成像原理 数码相机的成像原理

    照相机成像原理 数码相机的成像原理 1 1 数码相机 的成像原理 当打开相机的电源开关后 xff0c 主控程序芯片开始检查整个相机 xff0c 确定各个部件是否处于可工作状态 如果一切正常 xff0c 相机将处于待命状态 xff1b 若某一
  • MySQL 单表查询

    创建数据库并插入数据 创建表 xff0c 数据类型请自行查询 CREATE TABLE fruits id INT NOT NULL sid INT NOT NULL NAME CHAR 255 NOT NULL price DECIMAL
  • react ant Design pro Umi 项目左上角icon不显示

    今天本地运行项目没有问题 xff0c 打包发到远端发现logo icon不显示了 然后找了找资料说 LayoutSettings 哪里logo用链接图片可以本地图片有时候会加载异常 解决方法 xff1a 找到 app tsx 加个logo
  • ZeroMQ发布-订阅模式的应用(C++)

    我使用的ZeroMQ版本是4 2 0 xff0c 应用的是其发布 订阅模式 应该知道的细节 xff1a PUB SUB套接字是慢连接 xff0c 你无法得知SUB是何时开始接收消息的 就算你先打开了SUB套接字 xff0c 后打开PUB发送
  • Ubuntu 问题记录(1)| 关于卸载以源码方式安装的库

    Ubuntu 使用源码安装 lib 后 xff0c 如果要卸载 xff0c 则在 lib build 路径下使用 sudo make uninstall 之后再用 sudo updatedb 更新一下 lib 库 xff0c 再使用 loc
  • 注意字符数组最后会自动加\0

    今天做了一道考研题 规定数组大小为200 但是我没注意到后尾需要加 0 后来果断没有A过去 很伤心 反复不断地尝试怎么都不行 后来经一位仁兄点拨 瞬间豁然 include lt iostream gt include lt cstdio g
  • 在TypeScript中使用parseInt()

    在使用angular写一些东西的时候 xff0c 需要用到parseInt 方法来将时间戳转换成时分秒 xx时 xx分 xx秒 的格式 xff0c 但是因为angular所使用的是Typescript xff0c 而 parseInt st
  • CAS6.2.x ~ 准备(1)

    前言 CAS 企业单点登录 xff0c 目前最新版本是6 2 x Apereo 的 Central Authentication Service xff0c 通常称为CAS CAS是用于web的企业多语言单点登录解决方案 xff0c 并试图