cas的service管理

  • 总结
    • 开篇概念
    • 服务管理表
      • 通配规则
        • ant通配规则
          • 代码验证
    • 服务加载
    • 授权服务检查
    • 测试环节
    • 实现原理

总结

CAS对提供单点登录的服务采用双向控制。第一,cas client端需要指定提供服务的casServer;第二,casClient提供服务service,需要在casServer中进行注册。

开篇概念

  • 服务:指的是cas允许接入的客户端的地址,cas在数据库中进行相应的地址进行了持久化。不在服务之列的客户端地址,将被限制由cas提供的服务。

服务管理表

基于数据源的cas的集成,会侵入数据库并初始化一些表,其中管理服务的表为:REGISTEREDSERVICEIMPL

通配规则

expression_type列记录了,cas服务匹配支持的2种通配规则:

  • 正则(regex
  • 类正则(ant)——cas默认提供的通配规则。

cas的service通配校验对应的实现类为:RegexRegisteredServiceRegisteredServiceImpl

/*** Mutable registered service that uses Ant path patterns for service matching.** @author Scott Battaglia* @author Marvin S. Addison* @since 3.1*/
@Entity
@DiscriminatorValue("ant")
public class RegisteredServiceImpl extends AbstractRegisteredService {/** Unique Id for serialization. */private static final long serialVersionUID = -5906102762271197627L;private static final PathMatcher PATH_MATCHER = new AntPathMatcher();public void setServiceId(final String id) {this.serviceId = id;}public boolean matches(final Service service) {return service != null && PATH_MATCHER.match(serviceId.toLowerCase(), service.getId().toLowerCase());}protected AbstractRegisteredService newInstance() {return new RegisteredServiceImpl();}
}

ant匹配相关实现代码实际上用到的是Spring-core包下的org.springframework.util.AntPathMatcher

ant通配规则

通配符 说明
? 匹配任何单字符
* 匹配0或者任意数量的字符
** 匹配0或者更多的目录

代码验证
public class AntPathMatcherTest {private static final PathMatcher PATH_MATCHER = new AntPathMatcher();@Testpublic void testMatch(){//?表示占位符需要1位System.out.println(PATH_MATCHER.match("http://172.18.10?.*/*/**","http://172.18.10.160:26955/bbs"));  //falseSystem.out.println(PATH_MATCHER.match("http://172.18.10?.*/*/**","http://172.18.103.160:26955/bbs"));  //trueSystem.out.println(PATH_MATCHER.match("http://172.18.103.*/*/**","http://172.18.103.160:26955/bbs"));  //true}}

补充阅读:ANT通配——https://www.cnblogs.com/cyjch/archive/2012/03/28/2421353.html

服务加载

DefaultServicesManagerImpl.java实现ServiceManager接口:

  1. 用来加载数据库中的服务配置信息,项目启动的时候就会获取完成,配置信息存储在内存中;
  2. 借助quartz任务自动进行更新——从数据库重新读取。private void load() 查询数据库获取授权service信息;
    cas-sevlet.xml:
<!-- 服务加载定时任务 -->
<bean id="serviceRegistryReloaderJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"p:targetObject-ref="servicesManager"p:targetMethod="reload"/>
<!-- 服务加载定时任务:默认延时2分钟 -->
<bean id="periodicServiceRegistryReloaderTrigger"
class="org.springframework.scheduling.quartz.SimpleTriggerBean"p:jobDetail-ref="serviceRegistryReloaderJobDetail"p:startDelay="${service.registry.quartz.reloader.startDelay:120000}"      p:repeatInterval="${service.registry.quartz.reloader.repeatInterval:120000}"/>

ApplicationContext.xml:

<bean id="servicesManager" class="org.jasig.cas.services.DefaultServicesManagerImpl"c:serviceRegistryDao-ref="serviceRegistryDao" />

日志信息:

2019-04-30 17:29:54,792 DEBUG [org.quartz.core.JobRunShell] - <Calling execute on job DEFAULT.serviceRegistryReloaderJobDetail>
2019-04-30 17:29:54,792 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] - <Reloading registered services.>

授权服务检查

ServiceAuthorizationCheck.java进行授权的检验;检查不通过时报错如下:

测试环节

service配置距离说明:
1、允许访问百度;
2、不允许访问新浪。

http://localhost:24588/cas/login?service=http://www.sina.com
查看日志:

2020-06-02 14:45:27,713 WARN [org.jasig.cas.CentralAuthenticationServiceImpl] - <ServiceManagement: Service [http://www.sina.com] is not allowed to use SSO.>

实现原理

    <!-- CentralAuthenticationService --><bean id="centralAuthenticationService" class="org.jasig.cas.CentralAuthenticationServiceImpl"><constructor-arg index="0" ref="ticketRegistry"/><constructor-arg index="1"><null /></constructor-arg><constructor-arg index="2" ref="authenticationManager"/><constructor-arg index="3" ref="ticketGrantingTicketUniqueIdGenerator"/><constructor-arg index="4" ref="uniqueIdGeneratorsMap"/><constructor-arg index="5" ref="grantingTicketExpirationPolicy"/><constructor-arg index="6" ref="serviceTicketExpirationPolicy"/><!-- 服务管理器注入 --><constructor-arg index="7" ref="servicesManager"/><constructor-arg index="8" ref="logoutManager"/><property name="persistentIdGenerator" ref="persistentIdGenerator"/></bean>

cas的service管理相关推荐

  1. Kubernetes——service管理

    文章目录 service管理 clusterIP 服务类型 nodePort Ingress 安装Ingress控制器 创建后端服务 对外发布服务 service管理 容器化带来的问题 自动调度:在P ...

  2. [云原生专题-33]:K8S - 核心概念 - 服务Service管理、服务发现、负载均衡

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  3. cas 修改服务器ip,Cas 服务器 Service(Cas客户端)注册信息维护

    作为Cas服务器,允许哪些客户端接入与否是通过配置来定义的.对Cas服务器来说,每一个接入的客户端与一个Service配置对应:在Cas服务器启动时加载并注册上这些Service,与之对应的客户端才能 ...

  4. 从零开始学习docker(二十一)service管理

    本节我们介绍如何以方便的方式管理service. 我们之前提到docker-compose,适用于本地开发,可以在本机部署,提供了很大的便利.而swarm是一个cluster,可不可以通过docker ...

  5. docker探索-使用docker service管理swarm(十一 )

    本文转自:https://www.cnblogs.com/atuotuo/p/6265541.html 1.创建一个 Docker service $ docker service create -- ...

  6. puppet之service管理

    本文系统Centos6.0 主机信息: master:master.lansgg.com 192.168.182.143 client1 :client1.lansgg.com 192.168.182 ...

  7. 【IBM Tivoli Identity Manager 学习文档】13 Service管理

    作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ Service的概念在前边的文档中有所介绍的,现在只是提一些需要注意的问题: 1.每一中Service都需要一个 ...

  8. 【转】SharePoint 2010 Search Service -- 管理中心配置

    今天配置了一下SharePoint Search,怕忘,赶紧记下来. 我参考了国外的一篇文章:Search Configuration in SharePoint 2010 首先,要查看以下User  ...

  9. kubernetes系列五之service管理

    目录 Service基本概念 定义 Pod的特征 解决方案​编辑 service模型 Endpoint Controller Kube-proxy iptables Kube-proxy IPVS 服 ...

最新文章

  1. python函数的作用是_Python函数一
  2. html元素和属性,HTML常用元素和属性(一)
  3. pyDash : Linux 性能监测工具
  4. 科大星云诗社动态20210601
  5. 23种设计模式C++源码与UML实现--中介者模式
  6. ASP.NETCore微服务(七)——【docker部署linux上线】(ECS+linux+docker+API上线部分)
  7. 信息学奥赛一本通 1982:【19CSPJ普及组】数字游戏
  8. xp系统服务器dns怎么设置在哪里设置,xp系统DNS怎么设置 DNS设置步骤
  9. Scatter matrix(散布矩阵)
  10. 7-zip压缩解压软件.html,7-Zip 压缩率比较高的压缩软件 17.01 美化优化版
  11. ARQ协议与滑动窗口协议
  12. 马云留给阿里的财富:4个应用场景落地+90个区块链专利
  13. 贝叶斯分类器matlab实现
  14. 文本数据挖掘-----词向量
  15. 网易蜗牛读书产品分析报告
  16. Starbound正式版的Mod制作(二)nbsp;…
  17. 好课堂Scratch编程10 趣学篇(六)听题!格里芬的挑战
  18. excel文件无法打印提示内存不足_Mac应用程序无法打开提示不明开发者或文件损坏的处理方法...
  19. [第一步]homekit智能家居,homebridge与homebridge-aqara通信协议
  20. TX1刷机教程(安装caffe、cuda/cudnn)

热门文章

  1. UI设计师就业发展前景如何?
  2. 装了 Linux 之后就感到迷茫、不知该干什么的朋友看过来
  3. 大数据挖掘技术在企业创新中的应用
  4. 从海尔工业平台数字化案例看产业生态平台的几点分享
  5. MyBatis 源码分析系列文章导读 1
  6. ORACLE分区表梳理系列(二)- 分区表日常维护及注意事项(红字需要留意)
  7. Anaconda3安装教程及配置(全)
  8. Android Studio Build Output控制台输出乱码解决
  9. 三国杀开源系列之三106@365
  10. java订餐系统_Java实现简单订餐系统