CAS单点登录-Service配置(七)
简介
cas客户端接入称之为service,必须经过cas的允许才能进行登录,当然不同的客户端可以做不同的事情,其中包括:
- 自定义主题(各客户端登录页自定义)
- 自定义属性(服务属性(固定)与用户属性(动态))
- 自定义协议
- 自定义登录后跳转方式,跳转路径
- 授权策略(拒绝属性、可登录时间范围限制、等等)
- 拒绝授权模式
接下来来一个FAQ
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配置及介绍,下一章进行cas-management配置
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: 匹配争取时的执行循序
除了以上说的还有很多配置策略以及节点,具体看官方文档,配置不同的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
测试
若cas启动后看到如下结果,恭喜你~
当然有可能看到数字为2,别担心,因为我做了maven的过滤,默认cas提供了默认的service,我们不需要可以自行解决
发现一些意外的事情可以考虑翻翻前面的博客进行学习哦
作者联系方式
如果技术的交流或者疑问可以联系或者提出issue。
邮箱:huang.wenbin@foxmail.com
QQ: 756884434 (请注明:SSO-CSDN)