CAS单点登录-集成客户端springboot方式(八)

之前在服务端整合了数据库,也完成的动态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同步到数据库中:


客户端配置

  1. 新建cas-client1客户端工程
    具体步骤这里就不详细说明

  2. 引入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>
  1. 配置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
  1. 开启CAS Client支持
@SpringBootApplication
@EnableCasClient//开启cas
public class Client1Application {

    public static void main(String[] args) {
        SpringApplication.run(Client1Application.class, args);
    }
}
  1. 编程测试Controller
@RestController
public class UserController {

    @GetMapping("/hello")
    public String hello() {
        return "恭喜CAS客户端整合成功";
    }
}

  1. 浏览器输入:http://localhost:9001/hello, 系统没有登陆会自动重定向到cas服务端登陆页面
image.png
  1. 输入:admin/123456 登陆后,会重定向会目标路径


注意:如果引入https必须保证客户端证书和服务端证书是同一个证书,不然就会报错。

sudo keytool -import -file /Users/wangsaichao/Desktop/tomcat.cer -alias tomcat -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容