部署和测试 apereo/cas

好的,部署和测试 Apereo CAS 的本地开发(dev)环境是一个非常常见的需求。下面我将为你提供一个详细的、分步骤的指南,涵盖从准备、运行到测试的完整流程。

核心概念:CAS Overlay 项目

Apereo CAS 官方推荐使用 Overlay方式来构建和部署。Overlay 机制允许你从一个官方的、预编译的基础 WAR 文件开始,然后通过添加你自己的配置文件(如属性文件、UI 主题、服务注册配置等)来覆盖默认设置,从而定制你的 CAS 服务器。这种方式简化了依赖管理和升级过程。


第一步:环境准备

  1. Java Development Kit (JDK)

    • 确认已安装 JDK 8, 11, 17 或 21(推荐使用 JDK 11 或 17,这是目前的主流和支持版本)。

    • 在终端运行 java -version进行验证。

  2. 构建工具

    • GradleMaven。Overlay 项目同时支持两者,当前官方文档和模板更偏向于 Gradle。本指南以 Gradle 为例。
  3. Git

    • 用于从 GitHub 克隆 Overlay 模板项目。
  4. IDE(可选但推荐)

    • IntelliJ IDEA, Eclipse, VS Code 等。这能极大地提升开发和调试效率。

第二步:获取并配置 Overlay 项目

  1. 克隆 Overlay 模板

    打开终端,到一个你希望存放代码的目录,执行以下命令:

    复制代码
    git clone https://github.com/apereo/cas-overlay-template.git cas-dev-server
    cd cas-dev-server

    这里我们克隆了模板,并创建了一个名为 cas-dev-server的文件夹。

  2. 切换到稳定版本分支(重要)

    master分支可能包含不稳定的新特性。建议切换到一个稳定版本的分支,例如 CAS 7.0.x。

    复制代码
    git branch -a | grep 7.0  # 查看可用的 7.0.x 分支
    git checkout 7.0.x       # 切换到 7.0.x 分支
  3. 关键配置文件:src/main/resources/application.yml

    这是 CAS 最主要的配置文件。对于开发环境,我们需要配置一个简单的、基于静态列表的认证方式(比如固定用户名/密码),并启用 HTTPS。

    • 如果 src/main/resources目录下没有 application.yml,你可以从 src/main/resources/application.properties复制一份并重命名,或者直接创建一个新的。

    • 使用以下基础配置内容:

      server:
      port: 8443
      ssl:
      enabled: true
      key-store: file:/path/to/your/keystore/thekeystore
      key-store-password: changeit

      cas:
      authn:
      accept:
      enabled: true
      users: "casuser::Mellon" # 定义用户: 用户名::密码
      # 如果你想用 LDAP(如 Apache DS)进行测试,可以在这里配置
      # ldap: ...

      复制代码
      # 服务注册:配置哪些应用(服务)可以使用 CAS 进行认证
      service-registry:
        core:
          init-from-json: true
        json:
          location: file:/path/to/your/cas-dev-server/src/main/resources/services

      logging:
      level:
      org:
      apereo: DEBUG # 开启 DEBUG 日志,便于排查问题

    注意:你需要生成一个用于 HTTPS 的 SSL 证书(keystore)。

    • 在项目根目录下运行:keytool -genkey -keyalg RSA -alias cas -keystore thekeystore -storepass changeit -keypass changeit -validity 360 -keysize 2048

    • 将上面配置中的 /path/to/your/keystore替换为这个 thekeystore文件的实际路径(例如:/home/yourname/cas-dev-server/thekeystore)。

  4. 注册服务

    为了让 CAS 保护你的应用,你需要先注册这个应用(服务)。创建一个 JSON 文件:src/main/resources/services/MyApp-10000001.json

    复制代码
    {
      "@class": "org.apereo.cas.services.RegexRegisteredService",
      "serviceId": "https://localhost:9000/.*",  # 你的应用(客户端)的 URL 模式
      "name": "MyLocalApp",
      "id": 10000001,
      "evaluationOrder": 1,
      "logoutType": "BACK_CHANNEL"
    }

第三步:构建并运行 CAS 服务器

在项目根目录(cas-dev-server)下,执行以下命令:

复制代码
./gradlew run
# 或者在 Windows 上使用: gradlew.bat run

这个命令会:

  1. 下载所有必要的依赖。

  2. 构建 CAS WAR 文件。

  3. 启动一个内嵌的容器(默认是 Apache Tomcat)。

  4. 将 CAS 应用部署到容器中。

第一次运行会花费一些时间下载依赖。完成后,你会在日志中看到类似 Started CasWebApplication in X.XXX seconds (JVM running for X.XXX)的信息,表示启动成功。


第四步:测试你的 CAS Dev 环境

现在你的 CAS 服务器已经在 https://localhost:8443/cas上运行。

  1. 访问登录页面

    • 打开浏览器,访问 https://localhost:8443/cas/login

    • 由于使用了自签名证书,浏览器会显示"不安全"警告。这是正常的。在开发环境中,你需要点击"高级"->"继续前往localhost(不安全)"以跳过警告。

  2. 进行认证

    • 在登录页面,使用你在 application.yml中配置的用户名和密码:casuser/ Mellon

    • 登录成功后,你会被重定向到 CAS 的标准欢迎页面,并显示一条成功的消息以及你的用户名。

  3. 测试单点登出(SLO)

    • 在欢迎页面上,通常会有一个"Logout"链接。点击它,你会被登出并返回到登录页面。
  4. 查看日志

    • 密切关注你启动 CAS 的那个终端窗口的输出。因为日志级别是 DEBUG,你会看到非常详细的流程信息,这对于理解和调试 CAS 的行为至关重要。

第五步:与 CAS 客户端集成测试(进阶)

一个完整的 SSO 流程需要服务提供者(SP,即你的应用)。你可以部署一个简单的 CAS 客户端来进行测试。

  1. 选择一个客户端

    • CAS 示例 PHP 客户端:这是一个非常简单的用于测试的 PHP 应用。

    • CASified Spring Boot 应用 :如果你熟悉 Java/Spring,可以创建一个简单的 Spring Boot 应用并集成 pac4jspring-security-cas

    • 官方 CAS 演示客户端:Apereo 也提供了一些演示客户端。

  2. 配置客户端

    • 在客户端的配置中,将 CAS 服务器的地址指向你的 dev 环境:https://localhost:8443/cas
  3. 测试流程

    1. 访问你的客户端应用(例如:http://localhost:9000)。

    2. 客户端会检测到你未登录,并将你重定向到 https://localhost:8443/cas/login

    3. 在 CAS 登录页输入凭证。

    4. 登录成功后,CAS 会将你重定向回客户端应用,并附带一个 Service Ticket(ST)。

    5. 客户端应用验证 ST 后,认为你已通过认证,显示受保护的内容。

总结与要点

  • Overlay 是标准方式:始终使用 Overlay 项目来开始你的 CAS 之旅。

  • HTTPS 是必须的:CAS 强制使用 HTTPS,开发环境需要用自签名证书。

  • application.yml是核心:所有配置都在这里。

  • 服务必须注册 :任何想使用 CAS 的应用都必须在 services/目录下有对应的 JSON 注册文件。

  • ./gradlew run是开发神器:这个命令集构建、部署、运行于一体,非常适合开发和测试。

  • 日志是你的好朋友:遇到问题时,第一件事就是查看 DEBUG 日志。

按照这个流程,你应该可以顺利地在本地搭建并测试一个功能完整的 Apereo CAS 开发环境。

相关推荐
小二·2 小时前
Git 高频操作命令大全(分类整理 + 修正说明)
大数据·git·elasticsearch
chatexcel2 小时前
ChatExcel亮相GTC2025全球流量大会
大数据·人工智能
KANGBboy2 小时前
ES 生产排查
大数据·elasticsearch·搜索引擎
幂律智能3 小时前
能源企业合同管理数智化转型解决方案
大数据·人工智能·能源
onebound_noah4 小时前
电商图片搜索:技术破局与商业落地,重构“视觉到交易”全链路
大数据·前端·网络·人工智能·重构·php
n***63276 小时前
Python大数据可视化:基于大数据技术的共享单车数据分析与辅助管理系统_flask+hadoop+spider
大数据·python·信息可视化
Michelle80236 小时前
24大数据 while循环
大数据·python
Hello.Reader7 小时前
从 CDC 到实时数据流Flink SQLServer CDC Connector 实战
大数据·sqlserver·flink
TG:@yunlaoda360 云老大9 小时前
谷歌云Flink 核心组成及生态发展:实时数据处理的下一代引擎
大数据·flink·googlecloud