CAS单点登录【4】 - Service配置及管理


在这里插入图片描述

Service 配置及管理

首先我们要明白CAS中的Service的概念是什么,
我们在第一节就讲解了在CAS系统中,主要分为三部分,

  • User、
  • Web应用、
  • SSO认证中心。

User就是我们普通用户,Web应用就是需要接入 SSO 认证中心的应用也就是这里的Service,而SSO认证中心就是CAS服务端。

在这里插入图片描述

简单来说就是CAS分为 服务端客户端 ,而S ervice 就是指具体的多个客户端(CAS Clients)

  • 而这里的 服务管理(Service Management) 就是:
    CAS服务管理工具允许CAS服务器管理员声明和配置哪些服务(Service,CAS客户端)可以在哪些方面使用CAS。
    服务管理工具的核心组件是服务注册表,它存储一个或多个注册服务。

接下来先介绍我们的第一个知识点——Service配置!

一、Service配置

我们刚刚提及到在CAS中,服务管理工具中的服务注册表当中存储着一个或多个注册服务,而这些Service中包含着各个行为的元数据,通过配置这些数据我们可以控制这些Service的 行为

主要 行为 包括一些几点:

  • 授权服务 - 控制哪些服务可以参与CAS SSO会话。
  • 强制身份验证 - 为强制身份验证提供管理控制。
  • 属性发布 - 为服务提供用户详细信息以进行授权和个性化
  • 代理控制 - 通过授予/拒绝代理身份验证功能进一步限制授权服务。
  • 主题控制 - 定义用于特定服务的备用CAS主题

Service 中配置属性主要包括以下这些信息:

在这里插入图片描述

上图介绍了一些在Service中常用的配置项,对于各个配置属性的含义可以参考具体文档, 服务配置

在这些配置中,比较常使用的主要是:

对CAS元数据的配置信息有了大致的了解后,我们需要配置其存储方式,,这里的Service存储方式提供了多种的解决方案。

在这里插入图片描述

推荐使用JSON、YAML、MongoDb、Redis、JPA这几种方式来存储使用,这里也将使用这几种方式来介绍。

1、JSON

这种方式也是CAS默认初始化使用的,注册表在应用程序上下文初始化时从JSON配置文件中读取服务定义,期望在配置的目录位置内找到JSON文件。

首先添加依赖包:

<dependency>
    <groupId>org.apereo.cas</groupId>
    <artifactId>cas-server-support-json-service-registry</artifactId>
    <version>${cas.version}</version>
</dependency>

resources/services 文件夹下面新建 web-10000001.json ,具体内容如下:

{
  "@class" : "org.apereo.cas.services.RegexRegisteredService",
  "serviceId" : "^(https|imaps|http)://.*",
  "name" : "web",
  "id" : 10000001,
  "evaluationOrder" : 10
}

注意: Json文件名字规则为 ${name}-${id}.json ,id必须为Json文件内容Json一致。

Json文件解释:

  • @class
    必须为 org.apereo.cas.services.RegisteredService 的实现类,对其他属性进行一个 json 反射对象
    常用的有 RegexRegisteredService ,匹配策略为 id正则表达式
  • serviceId :唯一的 服务 id
  • name : 服务名称,会显示在默认登录页
  • id :全局唯一标志 (需与文件名匹配
  • description :服务描述,会显示在默认登录页
  • evaluationOrder : 匹配争取时的执行循序,最好是比1大的数字

因为在 CAS服务 中,默认是提供了默认的 Service配置项 ,所以如果添加的 Json配置 没起作用,可以尝试注释掉默认启动 Json ,在 pom.xml 文件里面进行配置,

如下:

在这里插入图片描述

然后在配置文件application.properties下添加配置:

##
# Service Registry(服务注册)
#
# 开启识别Json文件,默认false
cas.serviceRegistry.initFromJson=true

#自动扫描服务配置,默认开启
#cas.serviceRegistry.watcherEnabled=true

#120秒扫描一遍
cas.serviceRegistry.schedule.repeatInterval=120000

#延迟15秒开启
# cas.serviceRegistry.schedule.startDelay=15000



##
# Json配置
cas.serviceRegistry.json.location=classpath:/services

启动服务,我们可以发现注释掉war包下Json初始化后,默认只启动了一个Json,在控制台中我们可以发现启动日志:

在这里插入图片描述

如果没有注释话,默认会是加载了2个服务配置。

输入具体地址https://sso.anumbrella.net:8443/cas/login?service=http://localhost:9080/sample,进行登录,输入用户名、密码登录成功!然后跳转到一个http://localhost:9080/sample?ticket=xxxxxxxxxxxxxx的地址。

发布了501 篇原创文章 · 获赞 112 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/LawssssCat/article/details/104996088