前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CAS单点登录-集成客户端springboot方式(八)

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

作者头像
用户1212940
发布2022-04-13 16:51:35
1.4K0
发布2022-04-13 16:51:35
举报
文章被收录于专栏:Lambda

之前在服务端整合了数据库,也完成的动态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 首先需要在服务端进行注册,否则客户端访问将提示“未认证授权的服务”警告:

11464886-b5b8811cdb1f75aa.png
11464886-b5b8811cdb1f75aa.png

为了方便后面测试,我们这里对所有https和http请求的service进行允许认证,在resources/services下新建文件HTTPS_HTTP-10000001.json,这个文件是我从cas源代码同路径下拷贝过来的。

代码语言:javascript
复制
{
  "@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:

代码语言:javascript
复制
##
# 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

启动信息中如果发现下图日志表示注册成功

11464886-b5104981247d400b.png
11464886-b5104981247d400b.png

同时由于我们配置了mysql数据库动态service,系统会自动见json中的service同步到数据库中:

11464886-fdf962708950ba71.png
11464886-fdf962708950ba71.png

客户端配置

  1. 新建cas-client1客户端工程 具体步骤这里就不详细说明
  2. 引入cas-client依赖 这里引入别人写好的cas-client-autoconfig-support的starter类,当前最新版:2.3.0-GA
代码语言:javascript
复制
<dependency>
    <groupId>net.unicon.cas</groupId>
    <artifactId>cas-client-autoconfig-support</artifactId>
    <version>2.3.0-GA</version>      
</dependency>
  1. 配置CAS服务器和客户端地址
代码语言:javascript
复制
#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支持
代码语言:javascript
复制
@SpringBootApplication
@EnableCasClient//开启cas
public class Client1Application {

    public static void main(String[] args) {
        SpringApplication.run(Client1Application.class, args);
    }
}
  1. 编程测试Controller
代码语言:javascript
复制
@RestController
public class UserController {

    @GetMapping("/hello")
    public String hello() {
        return "恭喜CAS客户端整合成功";
    }
}
  1. 浏览器输入:http://localhost:9001/hello, 系统没有登陆会自动重定向到cas服务端登陆页面
11464886-4ab2471f1d9df1c4.png
11464886-4ab2471f1d9df1c4.png

image.png

  1. 输入:admin/123456 登陆后,会重定向会目标路径
11464886-4cc0b8184205dc7a.png
11464886-4cc0b8184205dc7a.png

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

代码语言:javascript
复制
sudo keytool -import -file /Users/wangsaichao/Desktop/tomcat.cer -alias tomcat -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/06/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • service配置(服务端)
  • 启动cas-server
  • 客户端配置
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档