准备工作
安装依赖
在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 , 判断哪些属性值不允许出现在用户的属性里 |
示例:
用户必须含有值为 admin 的 cn
属性,且值为 Administrator 的
giveName 属性
{ "@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" ] ] } } }
|
用户必须含有值为 admin 的 cn
属性,或者值为 Administrator 的
giveName 属性
{ "@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" ] ] } } }
|
更多示例参考: 官方文档