史上最详细的 Apereo CAS 5.3开发教程:三、CAS Client客户端的配置

本文详细介绍了如何配置Apereo CAS 5.3客户端,包括项目配置、客户端注册及在CAS服务端注册客户端地址。通过修改host、导入项目、编辑web.xml、配置发布等步骤,确保客户端和服务端证书一致。并展示了如何创建JSON服务定义文件,以及在application.properties中启用JSON服务配置。最后,成功实现客户端的单点登录功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Apereo CAS Client 项目源码地址:https://github.com/cas-projects/cas-sample-java-webapp
CAS 系列详解:https://blog.youkuaiyun.com/makyan/column/info/36060
上一节内容:https://blog.youkuaiyun.com/makyan/article/details/88878667
本节继上一节内容讲解

2.1. 项目配置

先从CAS源码库中下载CAS Client客户端的示例项目,我们在此项目基础上进行修改。

2.1.1. 配置host

127.0.0.1 www.futurecloud-client1.com
127.0.0.1 www.futurecloud-client2.com

2.1.2. 导入项目,改名

官方demo导入idea,并将项目名修改为cas-client1

<artifactId>cas-client1</artifactId>

2.1.3. 修改项目web文件

修改web.xml,主要是cas服务端的地址和客户端的地址 ,
完整内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <!-- ========================单点登录开始 ======================== -->
    <!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置 -->
    <listener>
        <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
    </listener>
    <!-- 该过滤器用于实现单点登出功能,可选配置。 -->

    <filter>
        <filter-name>CAS Single Sign Out Filter</filter-name>
        <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
        <init-param>
            <param-name>casServerUrlPrefix</param-name>
            <!--修改为自己配置的cas 服务器 by yagnxj-->
            <param-value>https://www.futurecloud.com:8443/cas</param-value>
        </init-param>
    </filter>
    <filter-mapping>
      
### CAS 5.3 客户端配置教程 #### 配置概述 Apereo CAS 是一种广泛使用的单点登录解决方案,支持多种客户端集成方式。对于 CAS 5.3客户端配置,主要涉及以下几个方面:项目初始化、依赖管理以及服务注册。 --- #### 1. 初始化 CAS 客户端项目 在开始配置之前,需要创建一个新的 Maven 或 Gradle 项目作为客户端应用的基础环境。以下是基于 Maven 的示例: ```xml <dependencies> <!-- Spring Boot Starter Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- CAS Client Core Dependency --> <dependency> <groupId>org.jasig.cas.client</groupId> <artifactId>cas-client-core</artifactId> <version>3.6.1</version> </dependency> </dependencies> ``` 上述代码片段展示了如何引入 `cas-client-core` 依赖[^3],这是实现 CAS 协议的核心库。 --- #### 2. 修改 Web 应用程序的配置文件 为了使客户端能够与 CAS Server 正常交互,需调整应用程序中的过滤器设置。通常情况下,在 Java EE 中可以通过 `web.xml` 文件完成此操作;而在现代框架(如 Spring Boot)中,则通过编程方式进行配置。 ##### 基于 XML 的配置方法 如果使用传统的 Servlet API,可以在 `web.xml` 中定义以下内容: ```xml <filter> <filter-name>CAS Single Sign Out Filter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS Single Sign Out Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- Authentication Filter --> <listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class> </listener> ``` 该部分实现了单点登出功能并监听会话状态变化。 ##### 基于 Spring Boot 的自动配置 当采用 Spring Boot 构建时,推荐利用 Java Config 替代静态 XML 描述符的方式。下面是一个简单的例子: ```java import org.jasig.cas.client.authentication.AuthenticationFilter; import org.jasig.cas.client.session.SingleSignOutFilter; @Configuration public class CasClientConfig { @Bean public SingleSignOutFilter singleSignOutFilter() { final SingleSignOutFilter filter = new SingleSignOutFilter(); filter.setCasServerUrlPrefix("https://your-cas-server-url/cas"); return filter; } @Bean public AuthenticationFilter authenticationFilter() throws Exception { final AuthenticationFilter authFilter = new AuthenticationFilter(); authFilter.setCasServerLoginUrl("https://your-cas-server-url/cas/login"); authFilter.setServerName("http://localhost:8080"); // Your client app URL return authFilter; } } ``` 这段代码动态设置了 CAS 登录页面链接和服务名称等参数。 --- #### 3. 调整 CAS Server 的服务注册表 为了让 CAS Server 接受来自特定客户端的应用请求,必须更新其服务注册表。默认路径位于 Tomcat 的部署目录下 `\WEB-INF\classes\services` 文件夹内。 假设目标客户端允许 HTTP 和 HTTPS 请求,则编辑对应的 JSON 文件(例如 `HTTPSandIMAPS-10000001.json`),将其内容更改为如下形式: ```json { "@class": "org.apereo.cas.services.RegexRegisteredService", "serviceId": "^(https|http|imaps)://.*", "name": "HTTP and IMAP Service", "id": 10000001, "description": "Allows both secure (HTTPS) and insecure (HTTP) connections." } ``` 此外,还需确认是否存在额外的安全约束条件影响 TGC Cookie 行为。此时可在全局属性文件 `\WEB-INF\classes\application.properties` 添加以下条目以放宽限制[^4]: ```properties cas.tgc.secure=false cas.serviceRegistry.initFromJson=true ``` 这两项分别控制 Ticket Granting Cookies 是否强制加密传输以及是否启用 JSON 格式的初始加载机制。 --- #### 4. 测试连接 完成所有必要的更改之后,启动 CAS Server 及测试客户端实例,并验证两者之间的通信流程是否顺畅无误。具体步骤可能因实际场景而异,但一般包括访问保护资源触发重定向至认证入口点的过程。 ---
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值