CAS使用Restful接口创建service

准备工作

安装依赖

build.gradle文件中的 dependencies下加入下列两行

implementation "org.apereo.cas:cas-server-support-rest:${casServerVersion}"
implementation "org.apereo.cas:cas-server-support-rest-services:${casServerVersion}"

设置权限

在配置文件cas.progerties中加入两行

cas.rest.attributeName=personRole
cas.rest.attributeValue=ROLE_ADMIN

意思是用户的属性名字personRole的值是ROLE_ADMIN的,才可以使用接口创建service

调用接口创建service

curl -k -H "Content-Type: application/json" -X POST \
https://sso.example.org/cas/v1/services \
-u casuser:Mellon -d@/path/to/app.json

其中app.json示例:

{
"@class" : "org.apereo.cas.services.RegexRegisteredService",
"serviceId" : "https://app.example.org.+",
"name" : "ExampleApp",
"id" : 1,
"description": "This is our first application"
}

如果成功,http返回码是200

如果使用了没有权限的账号,返回码是403, 且response为: Request is not authorized

app.json的常用配置

参数 描述
id 必填,唯一标识,必须是合法的数字
name 必填,名称,255个字符以下
description 描述,255个字符以下
redirectUrl 验证完成之后跳转的链接
serviceId 必填,正则的服务器地址的描述
accessStrategy
enabled 当前配置是否激活
ssoEnabled 如果设置为false, 将会强制验证用户
requiredAttributes 一个map,验证用户需要的属性值
requireAllAttributes 布尔值,默认是true,判断是否需要全部属性都复合
unauthorizedRedirectUrl 验证失败跳转的链接
caseInsensitive 默认是false, 控制是否判断属性值大小写敏感
rejectedAttributes 一个map, 判断哪些属性值不允许出现在用户的属性里

示例:

用户必须含有值为 admincn 属性,值为 AdministratorgiveName 属性

{
"@class" : "org.apereo.cas.services.RegexRegisteredService",
"serviceId" : "testId",
"name" : "testId",
"id" : 1,
"accessStrategy" : {
"@class" : "org.apereo.cas.services.DefaultRegisteredServiceAccessStrategy",
"enabled" : true,
"ssoEnabled" : true,
"requiredAttributes" : {
"@class" : "java.util.HashMap",
"cn" : [ "java.util.HashSet", [ "admin" ] ],
"givenName" : [ "java.util.HashSet", [ "Administrator" ] ]
}
}
}

用户必须含有值为 admincn 属性,或者值为 AdministratorgiveName 属性

{
"@class" : "org.apereo.cas.services.RegexRegisteredService",
"serviceId" : "testId",
"name" : "testId",
"id" : 1,
"accessStrategy" : {
"@class" : "org.apereo.cas.services.DefaultRegisteredServiceAccessStrategy",
"enabled" : true,
"ssoEnabled" : true,
"requireAllAttributes": false,
"requiredAttributes" : {
"@class" : "java.util.HashMap",
"cn" : [ "java.util.HashSet", [ "admin" ] ],
"givenName" : [ "java.util.HashSet", [ "Administrator" ] ]
}
}
}

更多示例参考: 官方文档