当前位置: 首页 > news >正文

Centos Stream 8 搭建Cas Server

1.1.版本

本文主要介绍 CAS 服务端的安装,使用到的软件版本:JDK 1.8.0_451、Tomcat 8.5.79、CAS 5.3.16。

1.2.安装

有两种安装方式:

方式一:使用模版中自带的build命令,但每次增加功能(修改pom.xml)支持都需要重新打包,修改配置文件需要到打包好的web项目目录下修改,然后重启tomcat服务器,比较繁琐。

方式二:使用maven的overlay支持,使用idea打开模版项目,设置好jdk版本,然后新建src/main/java和src/main/resources目录,将模版代码中的默认配置拷贝到resources目录下,使用maven打包,这样新建resources目录下的配置会覆盖模版代码中的默认配置,每次新增功能(修改pom.xml)或修改配置时,重新打包即可,比方式一简单,本篇文章推荐采用方式二安装部署

方式一
生成部署包

通过官方提供的 cas-overlay-template(https://github.com/apereo/cas-overlay-template/tree/5.3) 模板来生成部署包。

先 clone 项目到本地:

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

拉下来的具体版本为5.3.16,git clone完毕后,进入该目录,可看到如下文件结构:

[root@worker0 cas-overlay-template]# ll
total 60
-rw-r--r--. 1 root root  4252 Oct 12 21:00 build.cmd
-rwxr-xr-x. 1 root root  5419 Oct 12 21:00 build.sh
drwxr-xr-x. 3 root root    17 Oct 12 21:00 etc
-rw-r--r--. 1 root root 11358 Oct 12 21:00 LICENSE.txt
drwxr-xr-x. 2 root root    63 Oct 12 21:00 maven
-rwxr-xr-x. 1 root root  7098 Oct 12 21:00 mvnw
-rwxr-xr-x. 1 root root  5839 Oct 12 21:00 mvnw.bat
-rwxr-xr-x. 1 root root  8496 Oct 12 21:00 pom.xml
-rw-r--r--. 1 root root  2668 Oct 12 21:00 README.md
[root@worker0 cas-overlay-template]#

执行打包命令:

#进入安装目录
cd cas-overlay-template/#windows
build.cmd package#linux
sh build.sh package

命令执行完成之后会在 target 目录下生成 cas 的 web 应用及 cas.war 的包。linux 环境可以使用 build.sh 脚本。

......
Downloading from central: https://repo.maven.apache.org/maven2/asm/asm-util/3.2/asm-util-3.2.jar
Downloaded from central: https://repo.maven.apache.org/maven2/asm/asm-analysis/3.2/asm-analysis-3.2.jar (18 kB at 703 B/s)
Downloading from central: https://repo.maven.apache.org/maven2/com/google/guava/guava/18.0/guava-18.0.jar
Downloaded from central: https://repo.maven.apache.org/maven2/asm/asm-util/3.2/asm-util-3.2.jar (37 kB at 1.4 kB/s)
Downloaded from central: https://repo.maven.apache.org/maven2/org/jdom/jdom/1.1/jdom-1.1.jar (153 kB at 5.9 kB/s)
Downloaded from central: https://repo.maven.apache.org/maven2/commons-io/commons-io/1.3.2/commons-io-1.3.2.jar (88 kB at 2.8 kB/s)
Downloaded from central: https://repo.maven.apache.org/maven2/org/springframework/spring-core/4.3.21.RELEASE/spring-core-4.3.21.RELEASE.jar (1.1 MB at 27 kB/s)
Downloaded from central: https://repo.maven.apache.org/maven2/com/google/guava/guava/18.0/guava-18.0.jar (2.3 MB at 52 kB/s)
[INFO] Layout: WAR
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 06:10 min (Wall Clock)
[INFO] Finished at: 2025-10-12T21:09:28+08:00
[INFO] Final Memory: 21M/325M
[INFO] ------------------------------------------------------------------------

构建成功后,会在当前目录下生成target目录

[root@worker0 cas-overlay-template]# ll
total 60
-rw-r--r--. 1 root root  4252 Oct 12 21:00 build.cmd
-rwxr-xr-x. 1 root root  5419 Oct 12 21:00 build.sh
drwxr-xr-x. 3 root root    17 Oct 12 21:00 etc
-rw-r--r--. 1 root root 11358 Oct 12 21:00 LICENSE.txt
drwxr-xr-x. 2 root root    63 Oct 12 21:00 maven
-rwxr-xr-x. 1 root root  7098 Oct 12 21:00 mvnw
-rwxr-xr-x. 1 root root  5839 Oct 12 21:00 mvnw.bat
-rwxr-xr-x. 1 root root  8496 Oct 12 21:00 pom.xml
-rw-r--r--. 1 root root  2668 Oct 12 21:00 README.md
drwxr-xr-x. 5 root root    65 Oct 12 21:07 target

进入target目录,会看到有如下文件结构

[root@worker0 cas-overlay-template]# cd target/
[root@worker0 target]# ll
total 124016
drwxr-xr-x. 5 root root        48 Oct 12 21:07 cas
-rw-r--r--. 1 root root 126991812 Oct 12 21:07 cas.war
drwxr-xr-x. 2 root root        28 Oct 12 21:07 maven-archiver
drwxr-xr-x. 3 root root        18 Oct 12 21:07 war
[root@worker0 target]#

各文件/目录说明如下:

cas     				cas.war解压后的目录,放到tomcat的webapps目录下可直接运行
cas.war 				cas.war,放到tomcat的webapps目录下可直接运行
maven-archiver 			maven坐标信息
war      				不知道干什么用的
生成密钥库

CAS 默认需要使用 Https 来访问,可使用 Java 的 keytool 工具来生成密钥库,然后使用该密钥库在 Tomcat 中配置 SSL。

keytool -genkeypair -alias cas-tomcat -keyalg RSA -keystore casServer.keystore

以下为密钥库生成过程,密码为itcast

PS D:\cas-overlay-template\etc\cas> keytool -genkeypair -alias cas-tomcat -keyalg RSA -keystore casServer.keystore
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?[Unknown]:  itcast
您的组织单位名称是什么?[Unknown]:  itcast
您的组织名称是什么?[Unknown]:  itcast
您所在的城市或区域名称是什么?[Unknown]:  jinan
您所在的省/市/自治区名称是什么?[Unknown]:  shandong
该单位的双字母国家/地区代码是什么?[Unknown]:  CN
CN=itcast, OU=itcast, O=itcast, L=jinan, ST=shandong, C=CN是否正确?[否]:  y输入 <cas-tomcat> 的密钥口令(如果和密钥库口令相同, 按回车):
再次输入新口令:Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore casServer.keystore -destkeystore casServer.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。
PS D:\cas-overlay-template\etc\cas>
Tomcat 中配置 SSL

将生成的 casServer.keystore 文件复制到tomcat的conf目录下,在 conf/server.xml 中新增一个 Connector:

 <Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" /><Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"maxThreads="150" SSLEnabled="true"><SSLHostConfig><Certificate certificateKeystoreFile="conf/casServer.keystore"certificateKeystoreType="JKS" certificateKeystorePassword="itcast" /></SSLHostConfig>
</Connector>
部署应用

把生成的 cas 应用目录或 cas.war 拷贝到 Tomcat 的 webapps 目录下并启动 Tomcat;

启动完成后访问应用:https://127.0.0.1:8443/cas,默认用户名密码为:casuser/Mellon

方式二

也是先clone下来项目目录

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

然后使用idea打开cas-overlay-template,Project Structure设置jdk为1.8,右侧Maven Profiles打开default和jdk1.8,

在目录中新建src/main/java和src/main/resources,要覆盖的类或配置都放入新建的这两个目录中,项目默认的类和配置都在overlays目录下,将下图所示配置拷贝到新建的resources目录下,打包时就会拿这里的覆盖overlays下默认的,这样方便项目增加功能

在这里插入图片描述

1.3.配置

配置日志存储路径

默认日志存储在/etc/cas/logs,不建议修改。

修改 WEB-INF\classes\log4j2.xml 文件中的日志文件保存目录:

<Properties><Property name="baseDir">/var/cas/logs</Property>
</Properties>
配置查看 Dashboard权限

目前情况下是没有权限查看 Dashboard 的,需要在 WEB-INF\classes\application.properties 中放开权限:

#修改如下配置,开启监控端点
cas.monitor.endpoints.enabled=true
cas.monitor.endpoints.sensitive=false#新增如下配置,设置能访问的ip,.+ 表示任意ip
cas.adminPagesSecurity.ip=127.0.0.1

修改完后重启 Tomcat,重新登录,注意,这里写的127.0.0.1,必须用127.0.0.1访问,用localhost不行,不然还是访问不了Dashboard

配置jdbc认证登录

默认情况下用户信息配置在 WEB-INF\classes\application.properties 中:

cas.authn.accept.users=casuser::Mellon

CAS 支持通过 JDBC 方式认证登录,以满足实际生成的需要。

引入 JDBC 的组件

在 clone 项目的 pom.xml 文件中增加如下配置:

<dependencies><dependency><groupId>org.apereo.cas</groupId><artifactId>cas-server-webapp${app.server}</artifactId><version>${cas.version}</version><type>war</type><scope>runtime</scope></dependency><!--...Additional dependencies may be placed here...--><!--jdbc认证登录依赖start--><dependency><groupId>org.apereo.cas</groupId><artifactId>cas-server-support-jdbc</artifactId><version>${cas.version}</version></dependency><dependency><groupId>org.apereo.cas</groupId><artifactId>cas-server-support-jdbc-drivers</artifactId><version>${cas.version}</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency><!--jdbc认证登录依赖end-->
</dependencies>

重新打包 build.cmd package,再把应用重新部署到 Tomcat 中。

创建用户表

每个应用系统一般都有用户表,这一步是不需要的;这里为了演示创建一个测试的用户表:

CREATE TABLE `cas_user`  (`id` bigint PRIMARY KEY,`user_name` varchar(32) NOT NULL COMMENT '用户名',`password` varchar(64) NOT NULL COMMENT '密码',`create_time` datetime COMMENT '创建时间',`expired_flag` int(1) NOT NULL DEFAULT 0 COMMENT '是否过期',`disabled_flag` int(1) NOT NULL DEFAULT 0 COMMENT '是否有效'
)

并插入测试数据,密码使用 MD5 加密,这里密码为 123456,MD5 加密后用十六进制表示为:e10adc3949ba59abbe56e057f20f883e

insert into cas_user(id,user_name,password,create_time)
values (1,'test','e10adc3949ba59abbe56e057f20f883e',now());
应用中配置数据库信息

在 WEB-INF\classes\application.properties 中修改配置:

#该行注释掉
#cas.authn.accept.users=casuser::Mellon#增加下列配置
#查询用户信息的SQL,会把用户名作为参数传进来
cas.authn.jdbc.query[0].sql=select * from cas_user where user_name=?
#指定密码字段
cas.authn.jdbc.query[0].fieldPassword=password
#指定过期字段
cas.authn.jdbc.query[0].fieldExpired=expired_flag
#指定是否可用字段
cas.authn.jdbc.query[0].fieldDisabled=disabled_flagcas.authn.jdbc.query[0].dialect=org.hibernate.dialect.MySQLDialect
cas.authn.jdbc.query[0].driverClass=com.mysql.cj.jdbc.Driver
cas.authn.jdbc.query[0].url=jdbc:mysql://192.168.245.1130:3306/cas?useUnicode=true&characterEncoding=UTF-8&useSSL=false
cas.authn.jdbc.query[0].user=tcwgq
cas.authn.jdbc.query[0].password=112113#默认加密策略,NONE 不加密
cas.authn.jdbc.query[0].passwordEncoder.type=DEFAULT
cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8
cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5

重启 Tomcat,使用 test/123456 登录 CAS 系统。

票据持久化

默认票据保存在内存中,集群中个节点无法共享;CAS 提供多种票据持久化的方法,如:JMS、JPA、MongoDB、Redis、Cassandra 等等,这里使用 Redis 来持久票据。

引入依赖

在 cas-overlay-template 的 pom.xml 文件中引入相关依赖:

<profile><activation><activeByDefault>true</activeByDefault></activation><id>default</id><dependencies><dependency><groupId>org.apereo.cas</groupId><artifactId>cas-server-webapp${app.server}</artifactId><version>${cas.version}</version><type>war</type><scope>runtime</scope></dependency>......<!--票据持久化依赖start--><dependency><groupId>org.apereo.cas</groupId><artifactId>cas-server-support-redis-ticket-registry</artifactId><version>${cas.version}</version></dependency><!--票据持久化依赖end--></dependencies>
</profile>

重新打包 build.cmd package,再把应用重新部署到 Tomcat 中。

配置 Redis 信息

在 WEB-INF\classes\application.properties 中增加配置:

cas.ticket.registry.redis.host=192.168.245.130
cas.ticket.registry.redis.database=0
cas.ticket.registry.redis.port=6379
cas.ticket.registry.redis.usePool=true

详细说明可参考官方文档:https://apereo.github.io/cas/6.5.x/ticketing/Redis-Ticket-Registry.html (5.3 版本的文档已经没有了,这里使用 6.5 版本的文档);配置完后,重启应用即可。

Session 持久化(可选)

Session 持久化用于 CAS 实例之间共享会话状态和会话故障转移;这一步是可选的,不建议使用,因为用户 CAS 会话往往是短期的,并且体验更像是请求-响应风格,而不是面向会话的。

引入依赖

在 cas-overlay-template 的 pom.xml 文件中引入相关依赖:

<profile><activation><activeByDefault>true</activeByDefault></activation><id>default</id><dependencies><dependency><groupId>org.apereo.cas</groupId><artifactId>cas-server-webapp${app.server}</artifactId><version>${cas.version}</version><type>war</type><scope>runtime</scope></dependency>......<!--Session持久化依赖start--><dependency><groupId>org.apereo.cas</groupId><artifactId>cas-server-webapp-session-redis</artifactId><version>${cas.version}</version></dependency><!--Session持久化依赖end--></dependencies>
</profile>

重新打包 build.cmd package,再把应用重新部署到 Tomcat 中。

配置 Session 持久信息

在 WEB-INF\classes\application.properties 中增加配置:

cas.webflow.session.storage=true
spring.session.store-type=redis
spring.redis.host=192.168.245.130
spring.redis.port=6379

详细说明可参考官方文档:https://apereo.github.io/cas/6.5.x/webflow/Webflow-Customization-Sessions.html (5.3 版本的文档已经没有了,这里使用 6.5 版本的文档);配置完后,重启应用即可。

使用 Http 方式登录

由于 Https 需要配置证书,比较麻烦,也不方便 CAS 客户端和 CAS 服务端的通信,可以修改为使用 Http 访问系统。

修改 HTTPSandIMAPS-10000001.json 文件

修改 WEB-INF\classes\services\HTTPSandIMAPS-10000001.json,增加 http 协议:

默认长这样

{"@class" : "org.apereo.cas.services.RegexRegisteredService","serviceId" : "^(https|imaps)://.*","name" : "HTTPS and IMAPS","id" : 10000001,"description" : "This service definition authorizes all application urls that support HTTPS and IMAPS protocols.","evaluationOrder" : 10000
}

中间添加http

{"@class" : "org.apereo.cas.services.RegexRegisteredService","serviceId" : "^(https|http|imaps)://.*","name" : "HTTPS and IMAPS","id" : 10000001,"description" : "This service definition authorizes all application urls that support HTTPS and IMAPS protocols.","evaluationOrder" : 10000
}
修改 application.properties 文件

修改 WEB-INF\classes\application.properties 文件,增加如下配置:

cas.tgc.secure=false
cas.warningCookie.secure=false
cas.serviceRegistry.initFromJson=true
Tomcat 改回 Http 协议
<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />

重启 Tomcat,通过 Http 协议访问 CAS:http://127.0.0.1:8443/cas

集群部署
集群架构

官方推荐的集群架构如下:

在这里插入图片描述

集群规划
ip用途
192.168.245.130CAS 服务端,nginx,redis
192.168.245.131CAS 服务端
192.168.245.132CAS 服务端
代理配置

这里使用 Nginx 作为代理服务器,配置如下:

http {......upstream cas {server 192.168.245.130:8080 weight=1;server 192.168.245.131:8080 weight=1;server 192.168.245.132:8081 weight=1;ip_hash;}server {listen       8080;server_name  localhost;......location /cas {proxy_pass http://cas/cas;}}
}

启动 Nginx 后,就可以通过 http://192.168.245.130:8080/cas 来访问 CAS 了。

1.4.启动

启动tomcat即可

1.5.访问

http方式

可以正常访问
http://localhost:8080/cas可以正常访问
http://127.0.0.1:8080/cas

https方式,域名方式需要配置域名映射

可以正常访问
https://localhost:8443/cas可以正常访问
https://127.0.0.1:8443/cas本机ip访问,可以正常访问
https://192.168.0.103:8443/cas可以正常访问
https://cas.example.org:8443/cas
http://www.dtcms.com/a/478898.html

相关文章:

  • 营销型网站建设优化汽车电商网站建设
  • 网站建设中最基本的决策南昌网站建设和推广
  • 网页设计网站如何添加链接家庭网站建设
  • ModuleNotFoundError: No module named ‘conda_token‘
  • 长春哪家做网站做的好网站建设员是做什么的
  • Milvus部署在T4 GPU上,Dify检索性能可以提升多少?
  • 南阳手机网站推广h5网页设计软件
  • 戴森球的物理模拟
  • 基于springboot社区养老服务平台的设计与实现(附源码)
  • 晨光科技 网站建设北京优化网站
  • 简易水位报警器方案开发案例
  • 公司网站建设费用计入什么科目做网站主页
  • 最长子串和分配苹果问题
  • Ubuntu设置共享文件夹
  • 网站开发一个多少钱系统网站推广方案怎么做
  • 制作网站需要懂哪些重生北京上大学开网吧做网站的小说
  • 二级域名iis建立网站免费企业邮箱排名
  • Linux程序设计从入门到实战(价值198元)课程下载
  • Leetcode 3709. Design Exam Scores Tracker
  • 告别环境配置难题:GISBox如何让DWG转GeoJSON零门槛上手
  • 国外网页网站设计如何修改wordpress登录页
  • 如需锦州网站建设网站备案前置审批表
  • 什么网站资源多东营最新通知
  • Docker图形化管理,轻松上手docker
  • C#利用.Net8.0新建站Mvc项目及支持Swagger服务的操作方法
  • 怎么做个手机版的网站吗购买网店
  • 网站做外链的具体步骤免费建站哪家性价比高
  • 波动率聚类现象对ETF网格密度配置的启示与应对策略
  • Vis-NIR 与 MIR 光谱的三种传感器融合及建模流程
  • Kuikly 小白拆解系列 · 第1篇|两棵树直调(Kotlin 构建与原生承载)