【CAS学习之一】CAS入门

一、CAS 介绍

CAS 是Yale大学发起的一个开源项目,旨在为Web应用系统提供一种可靠的单点登录方法,CAS在2004年12月正式成为JA-SIG的一个项目。
CAS 具有以下特点:
  开源的企业级单点登录解决方案。
  CAS Server为需要独立部署的Web应用。
  CAS Client支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。

二、CAS 原理和协议
1、CAS 包含两个部分: CAS Server 和 CAS Client ,CAS Client嵌入在应用程序中,而CAS Server是独立组件。
CAS Server :是一个war包,CAS框架已经提供,只需要把部署到web服务器上即可,负责验证用户并授权访问应用程序。
CAS Client:处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。不需要对这个部分进行过多编码,进行简单配置即可。

2、CAS协议是一种基于票证(ticket)的协议。
关键概念:
TGT(Ticket Granted Cookie):用户的SSO会话。
ST(Service Ticket):服务票据,在URL中作为GET参数传输,表示CAS服务器授予给特定用户的对于应用程序的访问权限。

3、CAS标准流程

三、构建CAS
目前最新版本是cas-6.3.0-RC2,依赖JDK11,官网建议使用WAR-Overlay方式构建CAS。
所谓的WAR-Overlay方式:会引入 CAS 项目组已经编译好的某一个可运行的二进制基础版本,然后在此基础上或者通过添加配置插入自己需要的模块,或者重写一些实现方法来定制个性化的功能,而基础版本中的代码会被覆盖,从而项目会以你希望的方式来执行
我们这里选用cas-overlay-template-5.2(https://github.com/apereo/cas-overlay-template/tree/5.2),依赖jdk1.8。

构建步骤:
1、克隆代码

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

2、导入IDE,IDE选择idea
为什么导入IDE?
(1)编译构建,拿到我们需要的war,当然使用mvn或build.cmd命令也可以构建;
(2)就是为了二次开发。WAR-Overlay方式可以通过引入可插拔的模块或者是用自己重写的java方法来覆盖基础版本中的class实现来扩展CAS。

 在 IDE 构建的过程会生成target 目录,另外还会生成一个 overlay 文件夹,里面放置从 maven 仓库取下来的官方构建好的基础版本。

3、二次开发前的一些设置和调整

我们需要基于官方基础版本的目录结构来调整本地项目的目录结构。
(1)先看一下官方 overlay 基础版本的目录结构:

application.properties文件中存放了所有配置属性,而org/apereo/cas是官方基础版本的代码路径。

(2)本地基于官方重新实现的方法代码必须放到对应的路径下才会覆盖基础版本中自带的 class 文件。
因此我们的本地项目做如下调整:

(3)在调整后的目录结构中,我们引入了第一个配置文件application.properties,引入 application.properties 文件是为了调整配置参数,这种配置文件不会自动覆盖基础版本中的同名配置文件,需要在 pom.xml 中手动声明,该声明也就是告知在构建时排除掉官方基础中带的,用自己修改过的。注意排除的路径为 overlay 基础版本中的路径。


(4)重写代码则只需要路径一致就会自动覆盖

(5)pom.xml文件中还有两个地方也简单说明一下,cas.version 设置使用的 cas-overlay 版本。

在profiles中的dependencies里添加依赖,也是在此处引入新模块,当然也可以不在 profiles 中写依赖,直接在和 profiles 平级的 dependencies 里写依赖。


参考:
官网
cas源码下载
官方建议使用war-overlay安装

Overlay 方式构建 CAS

使用WAR overlay的方式来安装cas6.0

以下为老版本的部署方案参考

单点登录之CAS SSO从入门到精通
CAS单点登录的实现

单点登录之CAS原理和实现
使用 CAS

附录:
CAS支持多租户登录改造1
CAS支持多租户登录改造2

原文地址:https://www.cnblogs.com/cac2020/p/13719609.html