Cas 5.2.x版本使用 —— Service配置介绍(十一)

一、简介

cas客户端接入称之为service,必须经过cas的允许才能进行登录,当然不同的客户端可以做不同的事情,其中包括:

  • 自定义主题(各客户端登录页自定义)

  • 自定义属性(服务属性(固定)与用户属性(动态))

  • 自定义协议

  • 自定义登录后跳转方式,跳转路径

  • 授权策略(拒绝属性、可登录时间范围限制、等等)

  • 拒绝授权模式

A: 什么是service,根cas有什么关系? 
B: service是使用型cas是服务型,cas好比游乐园,service好比来游乐园的游客 

A: 那service如何对接cas?service如何知道是否被允许接入? 
B: 好比游客需要进入游乐园,那么游客需要门票,获取门票有多种方式,可以用手机校验码,或者身份证进行获取。当然如果是犯罪分子门票都买不了,更何况进去游乐园 

A: 具体service如何作为客户端使用? 
B: 好比买门票,必须填写身份证号、手机号、付款等流程,当然也可以通过不同渠道购买,cas也有不同的客户端实现,cas client、pac4j等 

A: service接入有何好处? 
B: 被接入的service无需进行输入密码即可进入系统,好比A-service(OA系统)登录了,B-service(账单系统),C-service(CRM系统)无需再次登录,传统的方式有10个八个系统进行登录,用户会疯掉,开发员也需要管理多个系统的帐号数据

二、实战

持久化策略:

  • InMemory XML(通过spring bean进行内存存储)

  • JSON(通过json文件存储)

  • YAML(通过yml文件存储)

  • Mongo(文档数据库持久化)

  • JPA(关系型数据库持久化)

  • DynameDb

  • LDAP

  • Cochbase

在sso初步上线时推荐采用json文件存储,后面逐步多服务注入时推荐采用Mongo进行存储,采用cas-management进行采用UI进行管理我们的数据,目前阶段,持久化策略必须和cas进行配置一致才能生效

本章进行service的json配置及介绍,yml文件格式配置,参考文档:https://apereo.github.io/cas/5.2.x/installation/YAML-Service-Management.html

三、JSON 配置

需求:对所有http://localhost开头请求的service进行允许认证

resources/services下新建文件Localhost-10000002.json

{
  "@class": "org.apereo.cas.services.RegexRegisteredService",
  "serviceId": "^(http)://localhost.*",
  "name": "本地服务",
  "id": 10000002,
  "description": "这是一个本地允许的服务,通过localhost访问都允许通过",
  "evaluationOrder": 1
}

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

json文件解释:

  • @class:必须为org.apereo.cas.services.RegisteredService的实现类,对其他属性进行一个json反射对象,常用的有RegexRegisteredService,匹配策略为id的正则表达式

  • serviceId:唯一的服务id

  • name: 服务名称,会显示在默认登录页

  • id:全局唯一标志

  • description:服务描述,会显示在默认登录页

  • evaluationOrder: 匹配争取时的执行循序(越小越优先)

  • theme:主题,默认是apereo

除了以上说的还有很多配置策略以及节点,具体看官方文档,配置不同的RegisteredService也会有稍微不一样

四、启用识别

上面新建了json文件cas还不知道要去识别json,需要打开开关.

application.properties

#开启识别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

另外还需要在 pom.xml 文件中加入依赖配置

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

配置完成后启动cas,观察到如下打印,表示json服务注册起作用了

后续增加介绍,将service该用数据库方式获取。请关注

参考文档

https://apereo.github.io/cas/5.2.x/installation/Service-Management.html

https://apereo.github.io/cas/5.2.x/installation/JSON-Service-Management.html

https://apereo.github.io/cas/5.2.x/installation/Configuration-Properties.html#service-registry

https://blog.csdn.net/u010475041/article/details/78018100

赞(52) 打赏
未经允许不得转载:优客志 » JAVA开发
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏