之前在服务端整合了数据库,也完成的动态service配置,我们一直在操作cas服务器端,这里我们就来使用springboot完成cas客户端的接入操作。
环境概述
| ip | 端口 | 对应服务 |
|---|---|---|
| 127.0.0.1 | 8443 | CAS服务器 |
| 127.0.0.1 | 9001 | CAS客户端1 |
| 127.0.0.1 | 9002 | CAS客户端2 |
service配置(服务端)
客户端接入 CAS 首先需要在服务端进行注册,否则客户端访问将提示“未认证授权的服务”警告:
为了方便后面测试,我们这里对所有https和http请求的service进行允许认证,在resources/services下新建文件HTTPS_HTTP-10000001.json,这个文件是我从cas源代码同路径下拷贝过来的。
{
"@class" : "org.apereo.cas.services.RegexRegisteredService",
"serviceId" : "^(https|imaps|http)://.*",
"name" : "测试客户端",
"id" : 100002,
"description" : "这是一个测试客户端的服务,所有的https或者http访问都允许通过",
"evaluationOrder" : 2
}
注意:
services目录中可包含多个 JSON 文件,其命名必须满足以下规则:${name}-${id}.json,id必须为json文件中内容id一致。
对其中属性的说明如下,更多详细内容见官方文档-Service-Management。
- @class:必须为org.apereo.cas.services.RegisteredService的实现类
- serviceId:对服务进行描述的表达式,可用于匹配一个或多个 URL 地址
- name: 服务名称
- id:全局唯一标志
- description:服务描述,会显示在默认登录页
- evaluationOrder:定义多个服务的执行顺序
application.properties:
##
# service 注册配置
#
#开启识别json文件,默认false
cas.serviceRegistry.initFromJson=true
#自动扫描服务配置,默认开启
#cas.serviceRegistry.watcherEnabled=true
#120秒扫描一遍
#cas.serviceRegistry.repeatInterval=120000
#延迟15秒开启
#cas.serviceRegistry.startDelay=15000
#默认json/yml资源加载路径为resources/services
#cas.serviceRegistry.config.location=classpath:/services
启动cas-server
启动信息中如果发现下图日志表示注册成功
同时由于我们配置了mysql数据库动态service,系统会自动见json中的service同步到数据库中:
客户端配置
新建cas-client1客户端工程
具体步骤这里就不详细说明引入cas-client依赖
这里引入别人写好的cas-client-autoconfig-support的starter类,当前最新版:2.3.0-GA
<dependency>
<groupId>net.unicon.cas</groupId>
<artifactId>cas-client-autoconfig-support</artifactId>
<version>2.3.0-GA</version>
</dependency>
- 配置CAS服务器和客户端地址
#cas配置
#cas服务端前缀,不是登录地址
cas.server-url-prefix=http://localhost:8443/cas
#cas的登录地址
cas.server-login-url=http://localhost:8443/cas/login
#当前客户端的地址
cas.client-host-url=http://localhost:9001
#Ticket校验器使用Cas30ProxyReceivingTicketValidationFilter
cas.validation-type=CAS3
- 开启CAS Client支持
@SpringBootApplication
@EnableCasClient//开启cas
public class Client1Application {
public static void main(String[] args) {
SpringApplication.run(Client1Application.class, args);
}
}
- 编程测试Controller
@RestController
public class UserController {
@GetMapping("/hello")
public String hello() {
return "恭喜CAS客户端整合成功";
}
}
- 浏览器输入:http://localhost:9001/hello, 系统没有登陆会自动重定向到cas服务端登陆页面
-
输入:admin/123456 登陆后,会重定向会目标路径
注意:如果引入https必须保证客户端证书和服务端证书是同一个证书,不然就会报错。
sudo keytool -import -file /Users/wangsaichao/Desktop/tomcat.cer -alias tomcat -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit
本文详细介绍如何在SpringBoot项目中接入CAS认证服务,包括环境搭建、服务端配置、客户端接入流程及测试验证,适用于多服务认证场景。
823

被折叠的 条评论
为什么被折叠?



