IdsManager Server JAVA SDK¶
说明¶
此文档是JAVA方式接入IDaaS权限系统的SDK使用文档。
使用¶
下载SDK包¶
请下载:权限SDK
新建Client¶
Client client = new Client(ClientConfig.builder()
.host("http://localhost")
.port("80")
.build());
Client参数说明¶
参数 |
类型 |
默认值 |
说明 |
---|---|---|---|
enableRateLimit |
Boolean |
false |
开启限流功能 |
limitTimesPerSecond |
Integer |
300 |
每秒限流次数 (QPS),最大不能设置超过500/s,目前支持限流的接口见 {@link ApiPathEnum.limitable} |
enableRetry |
Boolean |
false |
开启重试功能 |
maxAttempts |
Integer |
3 |
最大重试次数 |
delay |
Long |
1000 |
重试延迟时间,单位:毫秒 |
multiplier |
Integer |
延迟计算时间 |
|
enableCache |
Boolean |
false |
开启缓存功能,目前支持开启缓存的接口见 {@link ApiPathEnum.cacheable |
maximumCacheSize |
Integer |
2000 |
最大缓存数量 |
expireAfterWrite |
Long |
2400000 |
写入缓存后过期时间,单位:毫秒 |
host |
String |
IDaas service host |
|
port |
String |
IDaas service port |
|
httpConnectTimeout |
Integer |
5000 |
HTTP连接超时时间,单位:毫秒 |
httpPoolMaxTotal |
Integer |
300 |
HTTP连接池最大连接数 |
httpPoolMaxIdle |
Integer |
5 |
HTTP连接池最大空闲连接数 |
httpReadTimeout |
Integer |
30000 |
HTTP读取超时时间,单位:毫秒 |
httpWriteTimeout |
Integer |
30000 |
HTTP写入超时时间,单位:毫秒 |
方法调用¶
获取AccessToken¶
说明:所有的权限系统相关的接口,都是受保护的资源。只有通过本接口获取到 access_token,才能继续调用后续接口。
请求参数¶
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
client_id |
string |
是 |
78d8be99ef30197c31888f5d2d1390a6pHn71****** |
从权限系统详情中获取到的 AppKey |
client_secret |
string |
是 |
96csUmei1g0tL629ufrVMZviFie7NWBOnGYs****** |
从权限系统详情中获取到的 AppSecret |
grant_type |
string |
是 |
固定值:client_credentials |
|
scope |
string |
是 |
固定值:read |
返回参数¶
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
access_token |
string |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
调用接口的令牌 |
token_type |
string |
Bearer |
固定值 |
expires_in |
string |
43199 |
access_token 过期时间,单位为秒。7200 秒为 2 小时。 |
scope |
Array |
[“read”] |
固定值 |
示例¶
@org.junit.Test
public void testOAuthToken() {
OAuthTokenRequest request = new OAuthTokenRequest()
.setClient_id("6abe2e5de7b8e294f73b9bd211bce8445nLWSxxxxx")
.setClient_secret("9OB2m25jUEQq1A72dWIl2pNigy09ryxjlHxxxxx")
.setGrant_type("client_credentials")
.setScope("read");
OpenApiResponse<OAuthTokenResponse> response = client.getAccessToken(request);
System.out.println(JsonUtil.toJson(response));
}
结果:
{
"data": {
"access_token": "AT71828ec3261c1195a72bf5610f9bd71acoXxxxxxx",
"token_type": "bearer",
"expires_in": "7199",
"scope": [
"read"
]
},
"success": true,
"code": 200,
"timeCost": 1099,
"isCacheHit": false
}
验证AccessToken¶
说明:验证用户的 accessToken 是否失效或已过期。
请求参数¶
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
accessToken |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
用户的 accessToken 值 |
返回参数¶
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
errorCode |
Int |
错误码 |
错误码:0 代表 accessToken 正常,301:错误的 accessToken, 305:请求参数检查失败 |
示例¶
@org.junit.Test
public void testValidateAccessToken() {
OAuthTokenValidationRequest request = new OAuthTokenValidationRequest().setAccessToken(accessToken);
GlobalHeader globalHeader = new GlobalHeader()
.setAccess_token(accessToken);
OpenApiResponse<OAuthTokenValidationResponse> response = client.validateAccessToken(request, globalHeader);
System.out.println(JsonUtil.toJson(response));
}
结果:
{
"data": {
"errorCode": 0
},
"success": true,
"code": 200,
"timeCost": 1095,
"isCacheHit": false
}
获取权限详情¶
说明:获取权限系统的基本信息。
请求参数¶
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
psId |
string |
是 |
Fgh9sKSS |
系统id,详情处可见 |
返回参数¶
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
uuid |
string |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
权限系统唯一标识 |
createTime |
string |
2019-09-14 13:54 |
权限系统创建时间 |
archived |
boolean |
false |
逻辑删除,false代表正常,true代表已删除 |
psId |
string |
AbcaPSKkss |
权限系统id |
name |
string |
43199 |
权限系统名称 |
creator |
string |
admin |
权限系统创建人 |
enabled |
boolean |
true |
是否已启用,true代表启用,false代表禁用 |
remark |
string |
测试sdk |
权限系统描述 |
示例¶
@org.junit.Test
public void testGetPsDetail() {
PSDetailRequest psDetailRequest = new PSDetailRequest()
.setPsId("ENWnhbxxxP");
GlobalHeader globalHeader = new GlobalHeader()
.setAccess_token(accessToken);
OpenApiResponse<PSDetailResponse> response = client.getPSDetails(psDetailRequest, globalHeader);
System.out.println(JsonUtil.toJson(response));
}
结果:
{
"data": {
"uuid": "4a55707757aa821e15282acc47c9ca479qwwur4FrM8",
"createTime": "2024-08-01 09:37",
"archived": false,
"psId": "nT1535wTeM",
"name": "测试SDK",
"remark": "",
"creator": "test",
"enabled": true
},
"success": true,
"requestId": "1723172446339$0cde13ec-b48f-ff8d-8aba-e56e7eaddfcf",
"code": "200",
"timeCost": 1363,
"isCacheHit": false
}
获取权限系统的所有角色(分页)¶
说明:获取指定权限系统下的角色信息。
请求参数¶
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
currentPage |
int |
否 |
1 |
查询第几页的数据,从 1 开始 |
pageSize |
int |
否 |
10 |
每页查询多少条目,不填写默认10条 |
psId |
String |
是 |
hU2czV4pMR |
权限系统id |
返回参数¶
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
List |
Array |
见下面LIST表 |
|
currentPage |
int |
1 |
当前页数,从 1 开始 |
totalSize |
int |
2 |
总角色数量 |
pageSize |
int |
10 |
一页包含的角色数量 |
psId |
string |
hU2czV4pMR |
当前 PS 系统 id |
list 表:
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
uuid |
string |
4c9b9f14e82a5d4978d5ed229ec1ae4d6912xmCXA1l |
角色唯一标识(角色外部id) |
name |
string |
测试角色 |
角色名,同一个权限系统内,角色名是唯一的,最长64字符,不能为空 |
permissionValue |
string |
test_role |
角色的权限值 |
remark |
string |
admin |
描述 |
enabled |
boolean |
true |
是否已启用 |
示例¶
@org.junit.Test
public void testGetPsAllRoles() {
PSAllRoleRequest psAllRoleRequest = new PSAllRoleRequest()
.setPsId("ENWnhbpnWP");
GlobalHeader globalHeader = new GlobalHeader()
.setAccess_token(accessToken);
OpenApiResponse<PSAllRoleResponse> response = client.getPSAllRoles(psAllRoleRequest, globalHeader);
System.out.println(JsonUtil.toJson(response));
}
结果:
{
"data": {
"psId": "nT1535wTeM",
"list": [
{
"uuid": "cfe4b413ef2bd0181ba55c0dcd367817Lrv121reKE1",
"name": "测试6660697e211a-4c88-4233-93a1-6b90addf7283",
"permissionValue": "test_rolebdce00ad-95eb-4f28-82d6-b60e07de281c",
"remark": "这是一个测试角色20240807",
"enabled": true
},
{
"uuid": "0b307dd22103aedd9cf0e18c1be2a7dcTFfkuYG6v69",
"name": "测试666095d3c3cf-f653-4bb8-9521-575e79edcbb5",
"permissionValue": "test_rolead7457fb-aa2e-4092-832f-e5c17fd5450c",
"remark": "这是一个测试角色20240807",
"enabled": true
},
{
"uuid": "3cb48852f9ad76c19e43276596cf90b51f6giWoyT74",
"name": "测试3000527222b9-d1b3-4e96-a78f-ce8fe25188cd",
"permissionValue": "test_rolee360540f-5af2-43a5-84e0-515c83cf5a1e",
"remark": "这是一个测试角色20240807",
"enabled": true
},
{
"uuid": "24e8c0d803dc3b8b509c38067c4f8ff2ae3RFLzfXzC",
"name": "测试角色Up24_e1b6e943-9097-4a96-8f56-fa2afc37a5d7",
"permissionValue": "test_role_up48d542f1-ac48-4183-8ae8-fada24d52a78",
"remark": "20240807",
"enabled": false
},
{
"uuid": "f41bf03b625cf4f8a46b283456705a7aaV5oj31tRF8",
"name": "测试角色7b2ddb1d-8d86-4c81-b968-3eae248fa9ec",
"permissionValue": "test_role6c69b445-a958-4845-ac02-d6edc8bd4955",
"remark": "这是一个测试角色20240807",
"enabled": true
},
{
"uuid": "09dc5c5bad8f2918327fbf77c04eaf63GogRL6dfvvN",
"name": "测试角色b1669f7b-19ab-4f35-a0af-bdcb021acc36",
"permissionValue": "test_role7e17915a-6f53-4e9a-8925-a92e5becdb37",
"remark": "这是一个测试角色",
"enabled": true
}
],
"totalSize": 6,
"currentPage": 1,
"pageSize": 10
},
"success": true,
"requestId": "1723173603087$bbea5f1c-3edd-8442-ead0-09199af905bc",
"code": "200",
"timeCost": 1673,
"isCacheHit": false
}
新增角色¶
说明:向当前的权限系统中新增一个角色。
请求参数¶
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
name |
string |
是 |
测试角色 |
角色名,同一个权限系统内,角色名是唯一的,最长64字符,不能为空 |
permissionValue |
string |
是 |
test_role |
角色的权限值,统一个权限系统内,角色的权限值是唯一的,最长64字符, |
只能包含字母数字和“-”或者“_”,不能为空 |
||||
enabled |
boolean |
是 |
true |
是否启用角色 |
psId |
String |
是 |
hU2czV4pMR |
PS系统id |
remark |
String |
否 |
这是一个测试使用的角色 |
角色描述信息,最长255字符,可以为空 |
返回参数¶
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
roleUuid |
string |
447fed833d8739ecb1caf6f38af14e65tthuiDBac88 |
新生成的角色 全局唯一标识 |
示例¶
@org.junit.Test
public void testCreatePSRole() {
PSRoleCreateRequest request = new PSRoleCreateRequest()
.setName("测试角色" + UUID.randomUUID())
.setPermissionValue("test_role" + UUID.randomUUID())
.setEnabled(true)
.setRemark("这是一个测试角色")
.setPsId("ENWnhbpnWP");
GlobalHeader globalHeader = new GlobalHeader()
.setAccess_token(accessToken);
OpenApiResponse<PSRoleCreateResponse> response = client.createPSRole(request, globalHeader);
System.out.println(JsonUtil.toJson(response));
}
结果:
{
"data": {
"roleUuid": "74e98cff081f4a5c6eacc66e64f0b82eMLAeM9tnrPN"
},
"success": true,
"requestId": "1722933589805$0a48b113-ddac-e3d9-bebc-0d717d49453e",
"code": 200,
"timeCost": 471,
"isCacheHit": false
}
编辑角色¶
说明:修改一个现有的角色
请求参数¶
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
uuid |
string |
是 |
447fed833d8739ecb1caf |
待修改的角色全局唯一标识,角色外部id,必填 |
name |
string |
是 |
测试角色 |
角色名,同一个权限系统内,角色名是唯一的,最长64字符,如果为空则代表不修改 |
permissionValue |
string |
是 |
test_role |
角色的权限值,统一个权限系统内,角色的权限值是唯一的,最长64字符, |
只能包含字母数字和“-”或者“_”,如果为空则代表不修改 |
||||
enabled |
boolean |
是 |
true |
是否启用角色 |
psId |
String |
是 |
hU2czV4pMR |
PS系统id |
remark |
String |
否 |
这是一个测试使用的角色 |
角色描述信息,最长255字符,可以为空 |
返回参数¶
无
示例¶
@org.junit.Test
public void testUpdatePSRole() {
PSRoleUpdateRequest request = new PSRoleUpdateRequest()
.setUuid("f41bf03b625cf4f8a46b283456705a7aaV5oj31tRF8")
.setName("测试角色Up24_" + UUID.randomUUID())
.setEnabled(false)
.setPermissionValue("test_role_up" + UUID.randomUUID())
.setRemark("20240807")
.setPsId(psId);
GlobalHeader globalHeader = new GlobalHeader()
.setAccess_token(accessToken);
OpenApiResponse<PSRoleUpdateResponse> response = client.updatePSRole(request, globalHeader);
System.out.println(JsonUtil.toJson(response));
}
结果:
{
"data": {
},
"success": true,
"requestId": "1723013054508$8297bc5a-1efb-9558-5d27-75646cc32477",
"code": 200,
"timeCost": 357,
"isCacheHit": false
}
删除角色¶
说明:根据角色uuid删除角色(仅仅能删除禁用的角色)
请求参数¶
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
uuid |
string |
是 |
447fed833d8739ecb1caf6f38af14e65tthuiDBac88 |
待删除的角色全局唯一标识,角色外部id |
返回参数¶
无
示例¶
@org.junit.Test
public void testDeletePSRole() {
PSRoleDeleteRequest request = new PSRoleDeleteRequest()
.setUuid("ece64c4ab05eaf084fe13c2c220bb92dL02HRGDPb4x");
GlobalHeader globalHeader = new GlobalHeader()
.setAccess_token(accessToken);
OpenApiResponse<PSRoleDeleteResponse> response = client.deletePSRole(request, globalHeader);
System.out.println(JsonUtil.toJson(response));
}
结果:
{
"success": true,
"requestId": "1723014637077$b85d46cd-917b-9982-fcc0-2585197f0e7d",
"code": 200,
"timeCost": 939,
"isCacheHit": false
}
获取权限系统的资源(分页)¶
说明:获取权限系统的资源(分页),支持通过父级查询子级
请求参数¶
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
currentPage |
int |
否 |
1 |
查询第几页的数据,从 1 开始 |
pageSize |
int |
否 |
10 |
每页查询多少条目,不填写默认10条 |
psId |
String |
是 |
hU2czV4pMR |
PS系统id |
parentPermissionUuid |
String |
否 |
1dd90f467e3b3d7662e54ca9f3cfa6fa1d3ojutCdNA |
父级资源uuid |
searchVal |
String |
否 |
permission |
搜索权限名称或权限值关键字,右模糊查询 |
返回参数¶
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
List |
Array |
见下面LIST表 |
|
currentPage |
int |
1 |
当前页数,从 1 开始 |
totalSize |
int |
2 |
总角色数量 |
pageSize |
int |
10 |
一页包含的角色数量 |
psId |
string |
hU2czV4pMR |
当前 PS 系统 id |
list 表:
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
uuid |
string |
4c9b9f14e82a5d4978d5ed229ec1ae4d6912xmCXA1l |
权限全局唯一标识 |
name |
string |
permission_name |
权限资源名称 |
permissionValue |
string |
permission_value |
权限资源值 |
remark |
string |
admin |
描述 |
relationUrl |
string |
否 |
http:?/your-domain.co |
displayOrder |
long |
否 |
99 |
creator |
string |
test |
创建账户名 |
enterpriseUuid |
string |
1228c04ba88eb0bf9b6ac73ca662981c4MeFW4wy66B |
公司uuid |
psSystemUuid |
string |
4a55707757aa821e15282acc47c9ca479qwwur4FrM8 |
权限系统uuid |
parentPermissionUuid |
string |
677f5f6f1fa474403505423d6b9685d5ph6TlIFmPte |
父级权限资源uuid |
defaultPermission |
boolean |
false |
是否为默认的PS权限 |
groupId |
string |
- |
对默认权限资源进行分组 |
thirdPermission |
boolean |
false |
是否为三级权限 |
imported |
boolean |
false |
是否是导入的权限资源 |
parentPermissionExternalId |
string |
677f5f6f1fa474403505423d6b9685d5ph6TlIFmPte |
父级的外部ID |
externalId |
string |
7241f8c9c04d6f9f55635a6d4dd7ac24E298PKegwEr |
外部ID |
type |
string |
menu |
类型 |
directory |
string |
test02 |
权限资源路径 |
isParent |
boolean |
false |
是否是父级权限资源 |
createTime |
string |
2024-08-07 15:18 |
创建时间 |
archived |
boolean |
false |
逻辑删除标识 |
示例¶
@org.junit.Test
public void testGetPSPermissionPaginated() {
PSPermissionPaginatedRequest request = new PSPermissionPaginatedRequest()
.setCurrentPage(1)
.setPageSize(10)
.setPsId(psId);
GlobalHeader globalHeader = new GlobalHeader()
.setAccess_token(accessToken);
OpenApiResponse<PSPermissionPaginatedResponse> response = client.getPSPermissionPaginated(request, globalHeader);
System.out.println(JsonUtil.toJson(response));
}
结果:
{
"data": {
"list": [
{
"uuid": "72207d1c33c3b15761fc4c5fee82a621cmGSZzsnun6",
"createTime": "2024-08-07 16:22",
"archived": false,
"name": "测试权限567-e4afb803-60c5-40a3-8da4-ab30b8d05e75",
"permissionValue": "test_permissione3a92788-fae1-4cb1-8b60-1208402ab45c",
"remark": "20240807",
"enterpriseUuid": "1228c04ba88eb0bf9b6ac73ca662981c4MeFW4wy66B",
"psSystemUuid": "4a55707757aa821e15282acc47c9ca479qwwur4FrM8",
"defaultPermission": false,
"thirdPermission": false,
"imported": false,
"externalId": "72207d1c33c3b15761fc4c5fee82a621cmGSZzsnun6",
"type": "menu",
"displayOrder": 0,
"directory": " / ",
"isParent": false
}
],
"totalSize": 1,
"currentPage": 1,
"pageSize": 10
},
"success": true,
"requestId": "1723119854271$3aba5c54-da9b-b655-2f5e-16bdc5a4286c",
"code": "200",
"timeCost": 1311,
"isCacheHit": false
}
新增权限¶
说明:向当前的权限系统中新增一个权限。 IDaaS 权限系统可以维持一个属性接口,所以可以通过 parentUuid 参数指定父级权限。
请求参数¶
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
name |
string |
是 |
测试权限 |
权限名,最长64字符,不可为空 |
permissionValue |
string |
是 |
demo_permission |
权限的权限值,同一个权限系统内唯一,最长64个字符,不可为空 |
type |
string |
是 |
menu |
menu(菜单类权限),button(按钮型权限),api(接口类型),other(其他类型),data (数据类型) |
psId |
string |
是 |
hU2czV4pMR |
PS系统id |
parentUuid |
string |
否 |
9b63a96ee5aa800641b5a4 |
父级权限全局唯一标识,可填资源外部id,可以为null或者空字符串,null或者空字符串代表顶级的权限 |
parentValue |
string |
否 |
test1 |
父级权限资源值,parentValue和parentUuid选用其一,当parentUuid为空时才会使用parentValue |
remark |
string |
否 |
这是一个测试使用的权限 |
权限描述信息,可以为空,最长1024字符 |
relationUrl |
string |
否 |
http:?/your-domain.co |
资源URL,可以为空,最长1024字符 |
clientToken |
string |
否 |
Kqji1upjakhjdihq3e |
IDaaS 幂等机制字段,由调用方自动随机生成,标识一次请求操作。 |
displayOrder |
long |
否 |
99 |
显示顺序,可以为空,只能为非负数字 |
返回参数¶
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
permissionUuid |
string |
7dabd9e92a175781072c265aeccfc0f6nmYAtFqciZ8 |
新生成的 全局唯一标识 |
示例¶
@org.junit.Test
public void testCreatePSPermission() {
PSPermissionCreateRequest request = new PSPermissionCreateRequest()
.setName("测试权限20240807-" + UUID.randomUUID())
.setPermissionValue("test_permission" + UUID.randomUUID())
.setType("menu")
.setRemark("20240807")
.setPsId(psId);
GlobalHeader globalHeader = new GlobalHeader()
.setAccess_token(accessToken);
OpenApiResponse<PSPermissionCreateResponse> response = client.createPSPermission(request, globalHeader);
System.out.println(JsonUtil.toJson(response));
}
结果:
{
"data": {
"permissionUuid": "afc43858abad1c42bde8af87acccfd7dZvSbZU1VqTQ"
},
"success": true,
"requestId": "1723015424248$bd37b520-0a3b-5896-34c1-2db5058af9cc",
"code": 200,
"timeCost": 286,
"isCacheHit": false
}
编辑权限¶
说明:编辑当前的权限系统中一个权限
请求参数¶
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
uuid |
string |
是 |
9b63a96ee5aa800641b5a4a |
待编辑的权限全局唯一标识,资源外部id |
name |
string |
否 |
测试权限 |
权限名,最长64字符,为空代表不修改 |
permissionValue |
string |
否 |
demo_permission |
权限的权限值,同一个权限系统内唯一,最长64个字符,为空代表不修改 |
type |
string |
否 |
menu |
非数据类型:menu(菜单类权限),button(按钮型权限),api(接口类型),other(其他类型);数据类型:data (数据类型);数据类型不允许修改类型,非数据类型不能修改为数据类型 |
remark |
string |
否 |
这是一个测试使用的权限 |
权限描述信息,可以为空,最长1024字符 |
relationUrl |
string |
否 |
http:?/your-domain.co |
资源URL,可以为空,最长1024字符 |
parentUuid |
string |
否 |
9b63a96ee5aa800641b5a4 |
父级权限全局唯一标识,资源外部id,为 null 代表不修改,为空字符传代表 修改为顶级节点 |
parentValue |
string |
否 |
test1 |
父级权限资源值,parentValue和parentUuid选用其一,当parentUuid为空时才会使用parentValue |
displayOrder |
long |
否 |
99 |
显示顺序,可以为空,只能为非负数字 |
返回参数¶
无
示例¶
@org.junit.Test
public void testUpdatePSPermission() {
PSPermissionUpdateRequest request = new PSPermissionUpdateRequest()
.setUuid("afc43858abad1c42bde8af87acccfd7dZvSbZU1VqTQ")
.setName("permission-update-" + UUID.randomUUID())
.setPermissionValue("test_update_permission" + UUID.randomUUID())
.setType("menu")
.setRemark("这是一个测试权限987_update")
.setPsId(psId);
GlobalHeader globalHeader = new GlobalHeader()
.setAccess_token(accessToken);
OpenApiResponse<PSPermissionUpdateResponse> response = client.updatePSPermission(request, globalHeader);
System.out.println(JsonUtil.toJson(response));
}
结果:
{
"success": true,
"requestId": "1723015628526$2278c338-e709-d471-8b1a-6d1719227b77",
"code": 200,
"timeCost": 286,
"isCacheHit": false
}
删除权限¶
说明:删除一个现有权限。注意,当拥有子权限时,不可直接删除。
请求参数¶
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
uuid |
string |
是 |
9b63a96ee5aa800641b5a4a |
待删除的角色全局唯一标识,资源外部id |
返回参数¶
无
示例¶
@org.junit.Test
public void testDeletePSPermission() {
PSPermissionDeleteRequest request = new PSPermissionDeleteRequest()
.setUuid("677f5f6f1fa474403505423d6b9685d5ph6TlIFmPte");
GlobalHeader globalHeader = new GlobalHeader()
.setAccess_token(accessToken);
OpenApiResponse<PSPermissionDeleteResponse> response = client.deletePSPermission(request, globalHeader);
System.out.println(JsonUtil.toJson(response));
}
{
"success": true,
"requestId": "1723015853481$af80a8f0-5f71-059e-64eb-51eb4cc878f3",
"code": 200,
"timeCost": 955,
"isCacheHit": false
}
获取指定角色的已关联权限(分页)¶
说明:获取指定角色的所有已关联权限
请求参数¶
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
roleUuid |
String |
否 |
447fed833d8739ecb1caf6f38af14e65tthuiDBac88 |
指定角色 全局唯一标识,角色外部id |
currentPage |
int |
否 |
1 |
当前返回页数,从 1 开始 |
pageSize |
int |
否 |
10 |
每页数量 |
psId |
String |
是 |
KSJDJSKkk |
系统id,详情处可见 |
返回参数¶
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
List |
Array |
见下面LIST表 |
角色列表 |
creator |
string |
Admin |
创建人 |
currentPage |
number |
1 |
当前页数,从 1 开始 |
totalSize |
number |
2 |
总角色数量 |
totalSize |
int |
2 |
总角色数量 |
pageSize |
number |
10 |
一页包含的角色数量 |
psId |
string |
hU2czV4pMR |
当前 PS 系统 id |
List 表:
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
uuid |
string |
4c9b9f14e82a5d4978d5ed229ec1ae4d6912xmCXA1l |
权限 uuid |
parentPermissionUuid |
string |
978d5ed229ec1ae4d6912xmCXA1l4c9b9f14e82a5d4 |
父级权限的 uuid |
name |
string |
测试权限 |
access_token 过期时间,单位为秒。7200 秒为 2 小时。 |
permissionValue |
string |
test_permission |
权限的权限值 |
remark |
string |
这是一个新的测试权限。 |
描述 |
type |
boolean |
menu |
是否已启用 |
relationUrl |
string |
http://www.your-domain.com |
资源URL |
dataAccessRules |
Array |
{“uuid”:””,”type”:””,”accessRule”:””} |
数据访问权限,当前版本集合值可能为空暂不支持 |
示例¶
@org.junit.Test
public void testGetPSRolePermissions() {
PSRolePermissionsRequest request = new PSRolePermissionsRequest()
.setCurrentPage(1)
.setPageSize(10)
.setPsId(psId)
.setRoleUuid("3cb48852f9ad76c19e43276596cf90b51f6giWoyT74");
GlobalHeader globalHeader = new GlobalHeader()
.setAccess_token(accessToken);
OpenApiResponse<PSRolePermissionsPaginatedResponse> response = client.getPSRolePermissions(request, globalHeader);
System.out.println(JsonUtil.toJson(response));
}
结果:
{
"data": {
"psId": "nT1535wTeM",
"roleUuid": "3cb48852f9ad76c19e43276596cf90b51f6giWoyT74",
"list": [
{
"uuid": "677f5f6f1fa474403505423d6b9685d5ph6TlIFmPte",
"name": "test012",
"permissionValue": "test012",
"type": "menu"
},
{
"uuid": "7241f8c9c04d6f9f55635a6d4dd7ac24E298PKegwEr",
"parentPermissionUuid": "677f5f6f1fa474403505423d6b9685d5ph6TlIFmPte",
"name": "test013",
"permissionValue": "test013",
"type": "menu"
}
],
"totalSize": 2,
"currentPage": 1,
"pageSize": 10
},
"success": true,
"requestId": "1723018094704$24c7d0e1-cae1-7901-b9cb-b94bd415d1ab",
"code": 200,
"timeCost": 626,
"isCacheHit": false
}
把权限关联到角色¶
说明:建立权限和角色之间的关联关系。
请求参数¶
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
---|---|---|---|---|
roleUuid |
String |
是 |
447fed833d8739ecb1caf6f38af1 |
指定角色 全局唯一标识,角色外部id |
attachedPermissionUuidCollection |
Array |
否 |
[“tyG8nUWw”] |
想要新增权限 全局唯一标识数组,资源外部id |
detachedPermissionUuidCollection |
Array |
否 |
[“tyG8nUWw”] |
想要取消权限 全局唯一标识数组,资源外部id |
返回参数¶
无
示例¶
@org.junit.Test
public void testPSRoleModifyPermissions() {
PSRoleModifyPermissionsRequest request = new PSRoleModifyPermissionsRequest()
.setRoleUuid("0b307dd22103aedd9cf0e18c1be2a7dcTFfkuYG6v69")
.setAttachedPermissionUuidCollection(Arrays.asList("72207d1c33c3b15761fc4c5fee82a621cmGSZzsnun6"));
GlobalHeader globalHeader = new GlobalHeader()
.setAccess_token(accessToken);
OpenApiResponse<PSRoleModifyPermissionsResponse> response = client.psRoleModifyPermissions(request, globalHeader);
System.out.println(JsonUtil.toJson(response));
}
结果:
{
"success": true,
"requestId": "1723018978517$acec547f-a6c0-4664-1308-5e6a0a2c6de1",
"code": 200,
"timeCost": 642,
"isCacheHit": false
}
资源授权给实体¶
说明:将资源授权给实体。
请求参数¶
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
entityUuid |
string |
否 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
实体uuid,例如用户uuid |
entityExternalId |
string |
否 |
d70f635dff6c07f022c387520e552459tval7L7X6cF |
实体外部id,例如用户外部id,entityUuid和entityExternalId二者必填其一 |
entityType |
String |
是 |
UD_ACCOUNT |
实体类型:UD_ACCOUNT(账户)、ORGANIZATION_UNIT(组织机构)、UD_GROUP(组)、ATTRIBUTE_CLASS(分类) |
psId |
String |
是 |
SAFJASJk |
系统id,详情处可见 |
forwardAddPrivilegeUuidCollection |
Array |
否 |
见下面privilegeUuidCollection表 |
正向添加权限列表 |
forwardRemovePrivilegeUuidCollection |
Array |
否 |
见下面privilegeUuidCollection表 |
正向取消权限列表 |
reverseAddPrivilegeUuidCollection |
Array |
否 |
见下面privilegeUuidCollection表 |
反向添加权限列表 |
reverseRemovePrivilegeUuidCollection |
Array |
否 |
见下面privilegeUuidCollection表 |
反向取消权限列表 |
forwardAddDataItemOperation |
Array |
否 |
见下面dataItemOperation表 |
正向添加数据权限操作列表 |
forwardRemoveDataItemOperation |
Array |
否 |
见下面dataItemOperation表 |
正向取消数据权限操作列表 |
reverseAddDataItemOperation |
Array |
否 |
见下面dataItemOperation表 |
反向添加数据权限操作列表 |
reverseRemoveDataItemOperation |
Array |
否 |
见下面dataItemOperation表 |
反向取消数据权限操作列表 |
privilegeUuidCollection 表:
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
privilegeType |
string |
是 |
PS_PERMISSION |
权限类型 |
authorizations |
Array |
是 |
[{“privilegeUuid”:“72207d1c33c3b15761fc4c5fee82a621cmGSZzsnun6”}] |
权限列表 |
└privilegeUuid |
string |
是 |
9736d72a5f60d290bf36992457fba89575ggd7Hwm2Z |
权限uuid |
dataItemOperation 表:
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
psPrivilegeUuid |
string |
是 |
a60e86e4aa1e2d1a52363fe72131c422exG6MhAlrqb |
数据权限的权限uuid |
psDataModuleValue |
string |
是 |
xxxx |
数据权限模型值 |
attachedPSDataOperationValueCollection |
Array |
是 |
[“xxx1”,“xxx2”] |
操作类型值列表,如果是取消授权使用detachedPSDataOperationValueCollection |
返回参数¶
无。
示例¶
@org.junit.Test
public void testPSUpdateEntityPrivilege() {
PSEntityPrivilegeUpdateRequest request = new PSEntityPrivilegeUpdateRequest()
.setEntityType(PSEntityType.UD_ACCOUNT)
.setEntityUuid("a7f0086f40ef70f3cea996810c7d3fc4KNJvf8FGPg6")
.setPsId(psId)
.setForwardAddPrivilegeUuidCollection(
Collections.singletonList(new PSEntityPrivilegeUpdateRequest.BFFEntityAuthorizationPrivilegeAddDto().setPrivilegeType("PS_PERMISSION").setAuthorizations(
Collections.singletonList(new PSEntityPrivilegeUpdateRequest.BFFEntityAuthorizationDto().setPrivilegeUuid("677f5f6f1fa474403505423d6b9685d5ph6TlIFmPte"))))
);
GlobalHeader globalHeader = new GlobalHeader()
.setAccess_token(accessToken);
OpenApiResponse<PSEntityPrivilegeUpdateResponse> response = client.psUpdateEntityPrivilege(request, globalHeader);
System.out.println(JsonUtil.toJson(response));
}
结果:
{
"success": true,
"requestId": "1723118602927$6200b61c-8934-3c48-952d-f5b9a582232c",
"code": "200",
"timeCost": 1730,
"isCacheHit": false
}
~~查询已授权列表~~¶
返回值代码中没有固定的dto,用的是List。 说明:
请求参数¶
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
psId |
String |
是 |
SAFJASJk |
系统id,详情处可见 |
entityType |
String |
是 |
UD_ACCOUNT |
实体类型:UD_ACCOUNT(账户)、ORGANIZATION_UNIT(组织机构)、UD_GROUP(组)、ATTRIBUTE_CLASS(分类) |
entityUuid |
String |
否 |
f7cd1f3ae7edfe52c1c674001026364aacfs4HtB0Oz |
实体uuid,例如用户uuid |
entityExternalId |
string |
否 |
d70f635dff6c07f022c387520e552459tval7L7X6cF |
实体外部id,例如用户外部id,entityUuid和entityExternalId二者必填其一 |
privilegeType |
String |
是 |
PS_PERMISSION |
权限类型,自建系统默认填PS_PERMISSION,查询数据权限时需要填数据权限值 |
includeInherited |
String |
否 |
true |
是否查询继承权限 |
limitPrivilegeUuidCollection |
Array |
否 |
限制只查询部分资源 |
|
dataModulePrivilegeUuid |
Array |
否 |
c1c6526364aacfs4H7400102f7cd1f3ae7edfetB0Oz |
数据权限uuid |
返回参数¶
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
type |
String |
menu |
类型,menu,button等,如果是data是数据权限 |
permissionUuid |
String |
978d5ed229ec1ae4d6912xmCXA1l4c9b9f14e82a5d4 |
权限列表 |
permissionName |
string |
app |
权限名称 |
privilegeType |
string |
PS_PERMISSION |
权限类型 |
psDataModuleUuid |
string |
8d1cff94a8d7a291b5625b466c12319duf0wQUNno3E |
数据权限uuid |
checkStatus |
string |
8d1cff94a8d7a291b5625b466c12319duf0wQUNno3E |
权限状态 |
psDataModuleValue |
string |
数据权限值 |
|
operationName |
string |
新增 |
操作名称 |
operationValue |
string |
ADD |
操作值 |
uuid |
string |
8d1cff94a8d7a291b5625b466c12319duf0wQUNno3E |
操作uuid |
示例¶
@org.junit.Test
public void testPSListEntityPrivilege() {
PSEntityPrivilegeListRequest request = new PSEntityPrivilegeListRequest()
.setPsId(psId)
.setEntityUuid("a7f0086f40ef70f3cea996810c7d3fc4KNJvf8FGPg6")
.setEntityType(PSEntityType.UD_ACCOUNT)
.setPrivilegeType("PS_PERMISSION");
GlobalHeader globalHeader = new GlobalHeader()
.setAccess_token(accessToken);
OpenApiResponse<PSEntityPrivilegeListResponse> response = client.psListEntityPrivilege(request, globalHeader);
System.out.println(JsonUtil.toJson(response));
}
结果:
{
"data": {
"list": [
{
"parent": false,
"permissionUuid": "7241f8c9c04d6f9f55635a6d4dd7ac24E298PKegwEr",
"displayOrder": 1,
"type": "menu",
"checkStatus": "ALLOW",
"parentPermissionUuid": "677f5f6f1fa474403505423d6b9685d5ph6TlIFmPte",
"psSystemUuid": "4a55707757aa821e15282acc47c9ca479qwwur4FrM8",
"containsInheritance": false,
"psDataModuleUuid": "",
"checked": false,
"psDataModuleValue": "",
"privilegeType": "test013",
"open": false,
"permissionName": "test013"
}
]
},
"success": true,
"requestId": "1723117906568$c4fd9ca4-409d-22c9-3d4f-92fb78767ba3",
"code": "200",
"timeCost": 2505,
"isCacheHit": false
}
获取角色所有已授权用户(分页)¶
说明:获取当前角色所有已经授权的用户列表
请求参数¶
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
roleUuid |
String |
是 |
447fed833d8739ecb1caf6f38af14e65tthuiDBac88 |
指定角色全局唯一标识,角色外部id |
currentPage |
int |
否 |
1 |
当前返回页数,从 1 开始 |
pageSize |
int |
否 |
10 |
每页数量 |
psId |
String |
是 |
SAFJASJk |
系统id,详情处可见 |
返回参数¶
list |
Array |
角色列表 |
|
---|---|---|---|
└udAccountUuid |
string |
978d5ed229ec1ae4d6912xmCXA1l4c9b9f14e82a5d4 |
IDaaS 系统内 UDAccount 的全局唯一标识 |
└username |
string |
michael |
用户名 |
└displayName |
string |
Michael Dis |
显示名称 |
perPageSize |
number |
10 |
当前请求一页几条数据参数反馈 |
totalSize |
number |
2 |
总角色数量 |
psId |
string |
XuJNOLtDam |
当前 PS 系统 id |
roleUuid |
string |
b661f136fbde1c895b44eda7111ab458s736vCvD8aB |
当前角色 uuid |
currentPage |
number |
1 |
当前页数,从 1 开始 |
pageSize |
number |
10 |
一页包含的角色数量 |
示例¶
@org.junit.Test
public void testPSRoleUsers() {
PSRoleUsersRequest request = new PSRoleUsersRequest()
.setCurrentPage(1)
.setPageSize(10)
.setPsId(psId)
.setRoleUuid("09dc5c5bad8f2918327fbf77c04eaf63GogRL6dfvvN");
GlobalHeader globalHeader = new GlobalHeader()
.setAccess_token(accessToken);
OpenApiResponse<PSRoleUsersResponse> response = client.psRoleUsers(request, globalHeader);
System.out.println(JsonUtil.toJson(response));
}
结果:
{
"data": {
"list": [
{
"udAccountUuid": "58dc9bf5f38d04bb1466d3d0387ccd58dUPu3KCl26F",
"username": "luowengang",
"displayName": "luowengang1",
"externalId": "1835089752187545102"
}
],
"currentPage": 1,
"totalSize": 1,
"pageSize": 10,
"perPageSize": 0
},
"success": true,
"requestId": "1723188853276$01a5156d-f5ea-ca26-82ac-20acdee8f9b7",
"code": "200",
"timeCost": 1379,
"isCacheHit": false
}
获取权限系统指定用户的角色和权限¶
说明:获取用户已授权的角色和权限。
请求参数¶
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
username |
String |
是 |
Zhangsan |
指定的用户名 |
psId |
String |
是 |
SAFJASJk |
系统id,详情处可见 |
返回参数¶
返回参数
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
permissions |
List |
||
管理的权限列表 |
|||
roles |
List |
||
管理的角色列表 |
PSPermissionAPIDto:
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
uuid |
string |
978d5ed229ec1ae4d6912xmCXA1l4c9b9f14e82a5d4 |
IDaaS 系统内 权限的全局唯一标识 |
parentPermissionUuid |
String |
978d5ed229ec1ae4d6912xmCXA1l4c9b9f14e82a123 |
父级权限uuid |
name |
string |
Add用户 |
权限名称 |
remark |
string |
Add user test |
备注 |
relationUrl |
string |
http://your-domain.com |
资源URL |
permissionValue |
string |
ADD |
权限值 |
type |
string |
Menu |
类型,menu,button等 |
dataAccessRules |
List |
规则 |
PSDataAccessRuleAPIDto:
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
accessRule |
String |
||
规则 |
|||
uuid |
string |
978d5ed229ec1ae4d6912xmCXA1l4c9b9f14e82a5d4 |
IDaaS 系统内 权限的全局唯一标识 |
type |
string |
||
规则类型 |
BFFPSRoleDto:
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
systemUuid |
String |
978d5ed229ec1ae4d6912xmCXA1l4c9b9f14e82a123 |
系统uuid |
roleUuid |
string |
978d5ed229ec1ae4d6912xmCXA1l4c9b9f14e82a5d4 |
角色uuid |
roleName |
string |
Add用户 |
角色名称 |
permissionValue |
string |
ADD |
权限值 |
remark |
string |
备注 |
备注 |
checkStatus |
string |
NULL |
当前授权状态 |
containsInheritance |
boolean |
false |
是否包含继承 |
roleNameCode |
string |
测试角色 |
国际化code |
示例¶
@org.junit.Test
public void testPSUserRolePermissions() {
PSUserRolePermissionsRequest request = new PSUserRolePermissionsRequest()
.setPsId(psId)
.setUsername("luowengang");
GlobalHeader globalHeader = new GlobalHeader()
.setAccess_token(accessToken);
OpenApiResponse<PSUserRolePermissionsResponse> response = client.psUserRolePermissions(request, globalHeader);
System.out.println(JsonUtil.toJson(response));
}
结果:
{
"data": {
"rolePermissions": [
],
"permissions": [
{
"uuid": "677f5f6f1fa474403505423d6b9685d5ph6TlIFmPte",
"name": "test012",
"permissionValue": "test012",
"type": "menu"
}
],
"roles": [
{
"roleUuid": "09dc5c5bad8f2918327fbf77c04eaf63GogRL6dfvvN",
"roleName": "测试角色b1669f7b-19ab-4f35-a0af-bdcb021acc36",
"systemUuid": "4a55707757aa821e15282acc47c9ca479qwwur4FrM8",
"permissionValue": "test_role7e17915a-6f53-4e9a-8925-a92e5becdb37",
"remark": "这是一个测试角色"
}
]
},
"success": true,
"requestId": "1723115092863$d947f74e-76ea-9495-3d72-9259e17f2d19",
"code": "200",
"timeCost": 2120,
"isCacheHit": false
}
判断用户是否有角色¶
说明:判断用户是否拥有某角色
请求参数¶
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
roleUuid |
String |
否 |
540cf6e8b05b09b3938f865b33ab30d1 |
指定角色全局唯一标识,可填角色uuid或角色外部id,roleUuid和roleValue二者必填其一 |
roleValue |
String |
否 |
role_value |
角色值,roleUuid和roleValue二者必填其一 |
username |
String |
是 |
michael |
指定账号的账户名 |
psId |
String |
是 |
SAFJASJk |
系统id,详情处可见 |
返回参数¶
boolean类型。
示例¶
@org.junit.Test
public void testCheckUserPsHasRole() {
PSUserHasRoleCheckRequest request = new PSUserHasRoleCheckRequest()
.setPsId("TWMgMT5yHt")
.setUsername("123323")
.setRoleUuid("9d5e0510ce017c16b280dc07189a29bdDoPKIR64v9t");
GlobalHeader globalHeader = new GlobalHeader()
.setAccess_token(accessToken);
OpenApiResponse<Boolean> response = client.checkUserPsHasRole(request, globalHeader);
System.out.println(JsonUtil.toJson(response));
}
结果:
{
"data": true,
"success": true,
"requestId": "1723114874143$9228947f-51c8-180d-c512-4226a0475b59",
"code": "200",
"timeCost": 1300,
"isCacheHit": false
}
根据权限uuid判断用户是否有权限¶
说明:判断用户是否拥有某权限
请求参数¶
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
permissionUuid |
String |
是 |
447fed833d8739ecb1caf6f38af14e65tthuiDBac88 |
指定权限全局唯一标识 |
username |
String |
是 |
michael |
指定账号的用户名 |
psId |
String |
是 |
ASFjasds |
系统id,系统详情处可见 |
返回参数¶
boolean类型。
示例¶
@org.junit.Test
public void testCheckUserPsHasPermission() {
PSUserHasPermissionCheckRequest request = new PSUserHasPermissionCheckRequest()
.setPsId(psId)
.setUsername("test01")
.setPermissionUuid("7241f8c9c04d6f9f55635a6d4dd7ac24E298PKegwEr");
GlobalHeader globalHeader = new GlobalHeader()
.setAccess_token(accessToken);
OpenApiResponse<Boolean> response = client.checkUserPsHasPermission(request, globalHeader);
System.out.println(JsonUtil.toJson(response));
}
结果:
{
"data": false,
"success": true,
"requestId": "1723114657972$4a86496f-de99-87da-3d94-6fdc8d8b07e4",
"code": "200",
"timeCost": 1492,
"isCacheHit": false
}