之前在服务端整合了数据库,也完成的动态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 |
客户端接入 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。
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
启动信息中如果发现下图日志表示注册成功
同时由于我们配置了mysql数据库动态service,系统会自动见json中的service同步到数据库中:
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.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
@SpringBootApplication
@EnableCasClient//开启cas
public class Client1Application {
public static void main(String[] args) {
SpringApplication.run(Client1Application.class, args);
}
}
@RestController
public class UserController {
@GetMapping("/hello")
public String hello() {
return "恭喜CAS客户端整合成功";
}
}
image.png
注意:
如果引入https必须保证客户端证书和服务端证书是同一个证书,不然就会报错。
sudo keytool -import -file /Users/wangsaichao/Desktop/tomcat.cer -alias tomcat -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit