权限系统(PS)¶
最后更新:2022-01-05
背景¶
政企人员分工不同,对权限通常希望能严格管控。尤其是新应用的权限模型不是交给业务应用开发人员,为避免因为开发人员的水平导致参差不齐,希望收拢在IT管理人员中统一进行管控,这点在金融、物流、房地产等中尤其明显。IDP产品提供了PS权限模块,实现了三级授权模式,同时对权限的授予过程进行追踪监控,提供权限视图,对一个用户拥有的权限可以一目了然。
概述¶
针对应用、角色/岗位、数据,IDP产品提供了PS(Policy Server)模块,针对性提出了一二三级授权的概念,以指导用户的权限实践。
从上图可以看出,IDP产品提供了人员到资源,人员通过组到资源,人员通过角色到资源,一组资源的访问形成角色等多种灵活的方式。
本文档将介绍如何通过API调用,实现一个自己开发业务应用SP, 来调用IDP的PS模块来替代自建的角色和资源管理,实现基于RBAC的二级,三级授权等。第三方接入权限系统流程如下图,具体参考第4节集成流程。
1 术语定义¶
参考:IDP中产品术语介绍
2 实现原理¶
第三方应用系统在每次登录和鉴权,均需要通过调用 IDaaS 权限系统 API 接口来获取账号的角色、权限资源来完成统一授权管理。
3 场景描述¶
接下来我们将第三方业务系统 (OA业务系统)与 IDaaS 权限系统对接,完成在 IDaaS 权限平台集中分配账号在 OA 业务系统内的权限。
OA 业务系统的系统资源如下所示:
OA 业务系统分为 6 大功能模块,不同账号在各个模块的菜单、按钮及其内部数据等资源的可见和使用权限也不一致。例如:
普通用户,拥有【通讯录】【工作台】【行政办公】【项目管理】等基本权限
系统管理员,拥有【系统管理】权限
HR 部门管理员,【机构人员管理】权限
需要在 IDaaS 权限平台内对接 OA 业务系统的权限模型,并在 IDaaS 权限平台完成集中授权。
4 集成流程¶
4.1 准备工作¶
本章节内容需要你已经创建至少一个应用。如果没有创建,请前往左侧应用管理创建一个应用
点击左侧菜单中的权限系统
点击 【新增系统】。
选择之前创建的应用,输入权限系统名称, 点击提交。
在【OA业务系统】的【详情】中获取 AppKey、AppSecret 用于 API 接口的调用。
API 获取 access_token 方式,请参考 【5 权限系统 API 接口清单】 中 【5.1.1 获取权限系统授权 access_token】。
4.2 定义资源¶
无论是某个功能、菜单、按钮的查看权限、使用权限,还是某些特定数据的访问权限,都属于一种资源(Resource)。资源支持嵌套树形结构。管理员在这里可以新增、导入、删除、编辑资源,也可以为某资源关联到角色使用。
我们需要在 IDaaS 上定义 OA 业务系统的资源,构建权限树。
资源创建方式在 IDaaS 中有 3 种:API 接口方式、管理员手动操作、表格批量导入。
创建好的权限树如下图所示:
4.2.1 权限资源模型¶
IDaaS 权限系统将资源分为以下五种类型:
• 菜单
• 按钮
• API
• 数据
• 其他
权限资源类型作用:第三方业务系统可以根据不同的权限资源类型做不同的过滤或展示,需要第三方系统自己实现。例如:
菜单类型权限资源:可作为页面导航栏、二级菜单等页面可见范围控制。
按钮类型权限资源:可作为导出日志报表按钮、新建服务、注销企业等重要功能按钮的权限控制。
API 类型权限资源:可作为控制账户调用API接口权限以及数据权限的管理。如A用户有调用API接口权限,B用户没有调用API接口权限。
数据类型权限资源:支持新建数据模型,对于一个对象的多种操作建模,如订单系统中涉及到委派订单、进度查询等均可在数据模型中定义。
不同账号的数据显示范围也可在行规则、列规则中控制。如某骑手账号只能看到骑手自己的订单,可通过行规则实现。如只获取到北京市朝阳区的骑手账号,可通过列规则实现。
其他类型权限资源满足灵活场景下的自定义需求。
4.2.2 API 接口方式定义资源¶
创建权限资源请参考 【5 权限系统 API 接口清单】 中 【5.2.5 新增权限】
• 创建不同类型的资源(菜单、按钮、API、数据)通过type字段区分,menu 代表菜单权限,button 代表按钮权限,data 代表是数据权限。
• 设置资源的权限值,第三方业务系统可根据权限值判断权限。
编辑权限资源请参考 【5 权限系统 API 接口清单】 中 【5.2.6 编辑权限】
删除权限资源请参考 【5 权限系统 API 接口清单】 中 【5.2.7 删除权限】
4.2.3 管理员手动操作¶
以下流程需要在IDaaS管理界面操作,点击【权限系统】栏目
点击【OA业务系统】中的【权限资源】
点击【新增父级资源】管理员手动操作。
在新增资源侧边页,完成新增资源参数的配置
点击确定创建成功后,会在资源管理页面展示创建的权限资源。
选择需要创建子级资源的资源,点击操作栏中的【新增子级资源】。
在新增资源侧边页,完成新增资源参数的配置。
点击确定创建成功后,会在资源管理页面展示创建的权限资源,并且路径为之前选择的父级资源。
4.2.4 表格批量导入¶
管理员可以在 excel 表格中维护权限资源的基本信息和层级关系,通过使用导入功能批量导入权限资源。
在权限资源页面,点击导【导入资源】。
下载导入格式范例文档,并根据文档填写系统的所有权限资源的信息。
点击【上传文件】上传填写好的文件。
点击导入文件。
系统会弹窗提示导入结果,并在资源管理页面展示导入成功的资源。
4.3 定义角色¶
角色为一定权限的集合,需要先创建角色,在下一步完成权限资源和角色的关联。
在 IDaaS 中定义(创建)角色方式有 3 种:API接口方式、管理员手动操作、表格批量导入。
4.3.1 API 接口方式定义角色¶
创建权限资源请参考 【5 权限系统 API 接口清单】 中 【5.2.2 新增角色】
编辑权限资源请参考 【5 权限系统 API 接口清单】 中 【5.2.3 编辑角色】
删除权限资源请参考 【5 权限系统 API 接口清单】 中 【5.2.4 删除角色】
4.3.2 管理员动手操作¶
以下流程需要在IDaaS管理界面操作,点击【权限系统】栏目
点击【OA业务系统】中的【角色管理】
4.3.2.1 创建角色¶
在角色管理页面,单击【新增角色】。
在【新增角色】侧边页,完成以下配置。
名称:为角色命名。角色名称应唯一。
权限值:设置角色的权限值,第三方业务系统可根据权限值判断角色/权限。
状态:是否启用角色。
描述:添加角色备注信息。
完成配置后,单击【提交】。
4.3.2.2 编辑角色¶
在角色管理页面,定位到要操作的角色,单击其操作列下的【编辑】。
在【角色管理】侧边页【基本信息】页签下,根据需要修改角色的配置属性。
修改完配置后,单击【保存】。
4.3.2.3 删除角色¶
在角色管理页面,定位到要操作的角色,单击其操作列下的【删除】。
注意 删除角色之前,需要先禁用该角色
在提示对话框中,单击【确定】。
4.3.2.4 批量删除角色¶
在角色管理页面,勾选要操作的角色,单击页面下面的【批量删除】。
在提示对话框中,单击【确定】。
4.3.2.5 表格批量导入¶
在角色管理页面,点击 【导入】-【导入角色】。
下载【角色格式范例文档】,并根据文档填写角色基本信息。
点击【上传文件】,选择填写好的文件。
点击【导入文件】。
在【导入角色】侧边页,确认导入数据是否正确,确认无误后点击【确定上传导入】。导入成功后,会在角色管理页面展示导入的角色。
4.4 角色管理权限¶
当角色创建完成后,就需要对角色进行授权了,我们将定义好的角色按需要进行权限关联即可,从而建立权限资源 - 角色对应关系。
我们支持角色资源授权方式有 3 种:API接口方式、管理员手动操作、表格批量导入。
4.4.1 API 接口方式资源关联角色¶
4.4.2 管理员手动操作¶
以下流程需要在IDaaS管理界面操作,点击【权限系统】栏目
点击【OA业务系统】中的【角色管理】
4.4.2.1 关联权限¶
在【角色管理】页面,点击【某个角色】右侧的【关联权限】按钮。
在弹出的页面中选择要关联的权限即可。
4.4.2.2 表格批量导入¶
在角色管理页面,点击【导入】- 【导入角色关联权限】
2. 下载导入角色关联权限格式范例文档,并根据文档填写角色关联权限信息。
3. 点击上传文件,选择填写好的文件。
4. 点击【导入文件】。
5. 在导入角色侧边页,确认导入数据是否正确,确认无误后点击【确定上传导入】。
4.5 角色关联账户¶
角色权限关联好后,对账号进行关联,给每个账号关联上相应的角色信息,也可以直接授予账号权限资源。
我们支持角色账号授权方式有 3 种:API 接口方式、管理员手动操作、表格批量导入。
4.5.1 管理员手动操作¶
以下流程需要在IDaaS管理界面操作,点击【权限系统】栏目
点击【OA业务系统】中的【授权管理】
在授权管理页面,可以通过账号、机构、组、分类的维度关联该机构、组、分类内账号的角色和权限资源,也可以通过权限资源和角色维度选择哪些账号、机构、组、分类可以拥有该角色或资源。
点击添加关联,可选择账户,添加账户和角色的关联关系。
添加关联关系后,账户会自动继承角色的权限资源。
选中再次点击取消关联,可删除账户和角色的关联关系。
4.5.2 表格批量导入¶
在角色管理页面,点击 【导入】-【导入角色成员】
下载角色成员格式范例文档,并根据文档填写角色关联账号信息。
点击【上传文件】,选择填写好的文件
点击【导入文件】。
在导入角色侧边页,确认导入数据是否正确,确认无误后点击【确定上传导入】。
到这里我们的授权环节就全部完成了。
4.6 登录及获取权限¶
当我们完成以上步骤之后,接下来介绍在账号登录时是如何获取到该账号在 IDaaS 权限系统内的账号权限。
4.6.1 API 方式登录及获取权限¶
通过调用 IDaaS 权限系统 API 接口来获取账号的角色、权限资源。
查询当前账户的角色和权限资源列表,请参考 【5 权限系统 API 接口清单】 中 【5.3.6 获取权限系统指定用户的角色和权限】。
查询被授予的角色所包含的权限资源列表,请参考 【5 权限系统 API 接口清单】 中 【5.3.1 获取指定角色的已关联权限(分页)】。
4.6.2 token 方式登录及获取权限¶
如果 OA 业务系统是基于 OIDC 协议单点登录的话,我们可以先将 OA 业务系统集成到 IDaaS 平台,将应用绑定到权限系统。
4.7 SP 前端展示¶
当 OA 业务系统服务端获取该账号的权限信息后,按权限资源情况展示所拥有的菜单、按钮等资源即可。这里会涉及 OA业务系统的研发工作,具体前端展现方式按实际情况即可。通常会有两种方式:
无权限的功能菜单不展示。
所有功能菜单展示,但未授权的菜单不可使用,点击提示“无权访问”等提示信息。
4.8 鉴权¶
鉴权即当某账号访问某项菜单或按钮时,判断是该账号否具备此权限。例如,张三在登录到 O A业务系统后,当他每次点击 OA 业务系统的功能菜单时,OA 业务系统通过 API 接口向 IDaaS 权限系统查询该账号是否拥有访问此功能菜单的权限,当返回值判断是否可以访问该功能菜单。
实时鉴权¶
IDaaS 权限系统提供API接口来服务于 SP 进行鉴权。我们可以使用用户的角色、账户名称、权限外部 ID、权限值来进行鉴权。
在 IDaaS 权限系统中查询当前账户是否为允许访问该权限资源的角色,请参考 【5 权限系统 API 接口清单】 中 【5.4.1 判断用户是否有角色】。
根据账号和访问资源的权限值在 IDaaS 权限系统中查询是否有访问权限,请参考 【5 权限系统 API 接口清单】 中 【5.4.3 根据权限值判断用户是否有权限】。
根据账号和在 IDaaS 权限的外部 ID 查询是否有访问权限,请参考 【5 权限系统 API 接口清单】 中 【5.4.2 根据权限 uuid 判断用户是否有权限】。
登录时获取全部权限¶
同时支持在账号登录时获取其全部权限,在第三方应用系统中以 token 方式鉴权。缺点:在一次登录后到 access_token 失效前,均无法保证权限的实时性。
由于浏览器 URL 长度限制,采用 OIDC 协议做认证+授权时,授权的权限列表过长,建议以角色维度授权。
查询当前账户的全部角色和权限资源列表,请参考 【5 权限系统 API 接口清单】 中 【5.3.6 获取权限系统指定用户的角色和权限】。
其他API接口清单¶
根据权限系统 ID 查询在 IDaaS 权限系统中该权限系统的外部 ID、创建时间等详情信息,请参考 【5 权限系统 API 接口清单】 中 【5.1.2 获取权限系统信息】。
获取到指定应用权限系统的所有角色,请参考 【5 权限系统 API 接口清单】 中 【5.2.1 获取权限系统的所有角色(分页)】。
根据账号和权限树的父节点 ID 查询该账号在此节点下的已授权权限,请参考 【5 权限系统 API 接口清单】 中 【5.3.4 获取指定权限节点下,用户已授权的权限】。
查询某角色的授权账号列表,请参考 【5 权限系统 API 接口清单】 中 【5.3.1 获取角色所有已授权用户(分页)】。
根据用户名和密码进行认证,认证成功后返回该账号的 access_token 和已授权的应用列表,请参考 【5 权限系统 API 接口清单】 中 【5.5.1 使用用户名密码进行 API 认证】。
查看某账号的 access_token 是否过期,请参考 【5 权限系统 API 接口清单】 中 【5.5.2 验证用户 access_token 是否过期】。
5 权限系统 API 接口清单¶
5.1 权限系统全局接口¶
5.1.1 获取权限系统授权 access_token¶
接口地址
POST http://your-idaas-domain/oauth/token
接口说明
所有的权限系统相关的接口,都是受保护的资源。只有通过本接口获取到 access_token,才能继续调用后续接口。
access_token 的使用方式有两种:
第一种: Header 参数传递
头名称为 Authorization,值为Bearer {access_token} (请注意bearer和access_token之间的空格)
第二种: Query 参数传递
在请求URL的最后添加参数。如: http://your-idaas-domain/?access_token={access_token}
请求参数授权管理
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
client_id |
string |
是 |
78d8be99ef30197c31888f5d2d1390a6pHn71sZEqvP |
从权限系统详情中获取到的 AppKey |
client_secret |
string |
是 |
96csUmei1g0tL629ufrVMZviFie7NWBOnGYsJNLknQ |
从权限系统详情中获取到的 AppSecret |
grant_type |
array |
是 |
固定值:client_credentials |
|
Scope |
string |
是 |
固定值:read |
返回参数
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
access_token |
string |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
外部ID |
token_type |
string |
bearer |
OU uuid |
expires_in |
string |
43199 |
access_token 过期时间,单位为秒。7200 秒为 2 小时。 |
scope |
string |
read |
固定值:read |
示例¶
请求示例:
http://{your-idaas-domain}/oauth/token?client_id=78d8be99ef30197c318885d2d1390a6pHn71sZEqvP&client_secret=96csUmei1g0tL629ufrVMZviFie7NWBOnGYsJNLknQ&grant_type=client_credentials&scope=read
正常返回示例:
{ "access_token": "bd3a80ca-24c3-4da8-836f-9efcb2c52c4b", "token_type": "bearer", "expires_in": 41177, "scope": "read"}
5.1.2 获取权限系统信息¶
接口地址
POST /api/bff/v1.2/developer/ps/details
接口说明
获取权限系统的基本信息。
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
psId |
string |
是 |
Fgh9sKSS |
系统id,详情处可见 |
返回参数
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
uuid |
string |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
外部ID |
createTime |
string |
2019-09-14 13:54 |
权限系统创建时间 |
archived |
Boolean |
False |
逻辑删除,false代表正常,true代表已删除 |
psId |
sting |
AbcaPSKkss |
逻PS系统唯一id |
name |
sting |
43199 |
权限系统名称 |
host |
sting |
http://your-dmain.com |
PS 业务系统主页地址 |
remark |
sting |
这是一个针对 BPM 应用的权限系统。 |
权限系统说明 |
creator |
sting |
admin |
权限系统创建人 |
enabled |
boolean |
true |
是否已启用 |
示例
请求示例:
{base_url}/api/bff/v1.2/developer/ps/details?access_token={access_token}
正常返回示例:
{
"success": true,
"code": "200",
"message": null,
"requestId": "827E564F-D83C-476F-8CC7-DBF71CF19681",
"data": {
"uuid": "e605c20baab513eef15883bebd9558abtTCP3HxXzRe",
"createTime": "2019-09-14 13:54",
"archived": false,
"name": "户籍管理系统",
"remark": null,
"creator": "admin",
"enterpriseUuid": "7742923e8a597c49a6a49c01c369af2awlgZWg4jayv",
"enabled": true,
"defaultPS": false
}
}
5.2 角色管理接口¶
5.2.1 获取权限系统的所有角色(分页)¶
接口地址
GET /api/bff/v1.2/developer/ps/all_roles
接口说明
获取指定权限系统下的角色信息。
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
currentPage |
int |
否 |
1 |
查询第几页的数据,从 1 开始 |
pageSize |
int |
否 |
10 |
每页查询多少条目,不填写默认10条 |
psId |
String |
是 |
hU2czV4pMR |
PS系统id |
返回参数
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
List |
Array |
见下面LIST表 |
|
currentPage |
int |
1 |
当前页数,从 1 开始 |
totalSize |
int |
2 |
总角色数量 |
pageSize |
int |
10 |
一页包含的角色数量 |
perPageSize |
int |
10 |
当前请求时参数返回 |
psId |
string |
hU2czV4pMR |
当前 PS 系统 id |
list 表:
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
uuid |
string |
4c9b9f14e82a5d4978d5ed229ec1ae4d6912xmCXA1l |
OU uuid |
name |
string |
测试角色 |
角色名,同一个权限系统内,角色名是唯一的,最长64字符,不能为空 |
permissionValue |
string |
test_role |
角色的权限值 |
remark |
string |
admin |
描述 |
enabled |
boolean |
true |
是否已启用 |
示例
请求示例
{base_url}api/bff/v1.2/developer/ps/all_roles?currentPage=1&access_token={access_token}
正常返回示例
{
"success": true,
"code": "200",
"message": null,
"requestId": "D537580C-A5A2-4557-AEDD-3294DFB8ECE6",
"data": {
"list":[{
"uuid": "4c9b9f14e82a5d4978d5ed229ec1ae4d6912xmCXA1l",
"name": "Michael 测试角色",
"permissionValue": "michael_test_role",
"remark": "",
"enabled": false
},
{
"uuid": "61a779e3b2ac948d8768bb03801f99d9gRSYuTIStRH",
"name": "Michael 测试角色 2",
"permissionValue": "michael_test2",
"remark": "",
"enabled": true
}],
"totalSize": 2,
"currentPage": 1,
"pageSize": 10,
"perPageSize": 10,
"psId": "hU2czV4pMR"
}
}
5.2.2 新增角色¶
接口地址
POST /api/bff/v1.2/developer/ps/role/create?access_token={access_token}
接口说明
向当前的权限系统中新增一个角色。
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
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字符,可以为空 |
clientToken |
String |
否 |
Kqji1upjakhjdihq3e |
IDaaS 幂等机制字段,由调用方自动随机生成,标识一次请求操作。 |
返回参数
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
roleUuid |
string |
447fed833d8739ecb1caf6f38af14e65tthuiDBac88 |
新生成的角色 全局唯一标识 |
示例
请求示例
{base_url}/api/bff/v1.2/developer/ps/role/create?access_token=bd3a80ca-24c3-4da8-836f-9efcb2c52c4b
请求入参示例
{
"name":"测试角色",
"permissionValue":"test_role",
"enabled":true,
"remark":"这是一个测试使用的角色",
"clientToken":"hyc11bzqcjdra4fg",
"psId":"hU2czV4pMR"
}
正常返回示例
{
"success":true,
"code":"200",
"message":null,
"requestId":"51331044-A2FE-474A-BA0B-BF84599D8AEE",
"data":{
"roleUuid":"447fed833d8739ecb1caf6f38af14e65tthuiDBac88"
}
}
5.2.3 编辑角色¶
接口地址
PUT /api/bff/v1.2/developer/ps/role/update?access_token={access_token}
接口说明
修改一个现有角色。
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
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字符,可以为空 |
clientToken |
String |
否 |
Kqji1upjakhjdihq3e |
IDaaS 幂等机制字段,由调用方自动随机生成,标识一次请求操作。 |
返回参数
无。
示例
请求示例
{base_url}/api/bff/v1.2/developer/ps/role/update?access_token=bd3a80ca-24c3-4da8-836f-9efcb2c52c4b
请求入参示例
{
"name":"测试角色",
"uuid":"447fed833d8739ecb1caf6f38af14e65tthuiDBac88",
"permissionValue":"test_role",
"enabled":true,
"remark":"这是一个测试使用的角色",
"clientToken":"hyc11bzqcjdra4fg",
"psId":"hU2czV4pMR"
}
正常返回示例
{"success":true,"code":"200","message":null,"requestId":"51331044-A2FE-474A-BA0B-BF84599D8AEE"}
5.2.4 删除角色¶
接口地址
DELETE /api/bff/v1.2/developer/ps/role/delete/{uuid}?access_token={access_token}
接口说明
删除角色,仅能删除禁用的角色
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
uuid |
string |
是 |
447fed833d8739ecb1caf6f38af14e65tthuiDBac88 |
待删除的角色全局唯一标识,角色外部id |
返回参数
无。
示例
请求示例
{base_url}/api/bff/v1.2/developer/ps/role/delete/4c9b9f14e82a5d4978d5ed229ec1ae4d6912xmCXA1l?access_token=bd3a80ca-24c3-4da8-836f-9efcb2c52c4b
正常返回示例
{"success":true,"code":"200","message":null,"requestId":"51331044-A2FE-474A-BA0B-BF84599D8AEE","data": null}
5.2.5 获取权限系统的资源(分页)¶
接口地址
GET /api/bff/v1.2/developer/ps/permission/paginated
接口说明
获取权限系统的资源(分页),支持通过父级查询子级。
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
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 |
keyWord |
String |
是 |
permission |
搜索权限名称或权限值关键字 |
返回参数
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
List |
Array |
见下面LIST表 |
|
currentPage |
int |
1 |
当前页数,从 1 开始 |
totalSize |
int |
2 |
总角色数量 |
pageSize |
int |
10 |
一页包含的角色数量 |
perPageSize |
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 |
示例
请求示例
{base_url}/api/bff/v1.2/developer/ps/permission/paginated?currentPage=1&psId=hU2czV4pMR&access_token={access_token}
正常返回示例
{
"success": true,
"code": "200",
"message": null,
"requestId": "D537580C-A5A2-4557-AEDD-3294DFB8ECE6",
"data": {
"list":[{
"uuid": "d6a273ffed52cf1ca16f46d126a02141VYrtO67Kc3U",
"name": "数据权限测试",
"permissionValue": "data_test",
"relationUrl": null,
"remark": null,
"type": "menu",
"displayOrder": 1
}],
"totalSize": 1,
"currentPage": 1,
"pageSize": 10,
"perPageSize": 10,
"psId": "hU2czV4pMR"
}
}
5.2.6 新增权限¶
接口地址
POST /api/bff/v1.2/developer/ps/permission/create
接口说明
向当前的权限系统中新增一个权限。
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 |
新生成的 全局唯一标识 |
示例
请求示例
{base_url}/api/bff/v1.2/developer/ps/permission/create?access_token=bd3a80ca-24c3-4da8-836f-9efcb2c52c4b
请求入参示例
{"type":"menu","permissionValue":"demo_permission","name":"测试权限","remark":"这是一个测试使用的权限","relationUrl":"http:?/your-domain.co","psId":"mkcwicd4pqfhyd73"}
正常返回示例
{ "success":true, "code":"200","message":null, "requestId":"51331044-A2FE-474A-BA0B-BF84599D8AEE","permissionUuid":"1302544-A2FE-474A-GHAX-BF84599D8AGB"}
5.2.7 编辑权限¶
接口地址
PUT /api/bff/v1.2/developer/ps/permission/update?access_token={access_token}
接口说明
编辑当前的权限系统中一个权限。
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
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 |
clientToken |
string |
否 |
Kqji1upjakhjdihq3e |
IDaaS 幂等机制字段,由调用方自动随机生成,标识一次请求操作。 |
displayOrder |
long |
否 |
99 |
显示顺序,可以为空,只能为非负数字 |
返回参数
无。
示例
请求示例
{base_url}/api/bff/v1.2/developer/ps/permission/update?access_token=bd3a80ca-24c3-4da8-836f-9efcb2c52c4b
请求入参示例
{"uuid":"d481c6ff5cdd96536e25c364e8f052ffdvklCUq4o19","type":"menu","permissionValue":"demo_permission","name":"测试权限","remark":"这是一个测试使用的权限","relationUrl":"http:?/your-domain.co","clientToken":"mkcwicd4pqfhyd73","psId":"hU2czV4pMR"}
正常返回示例
{ "success":true, "code":"200", "message":null, "requestId":"51331044-A2FE-474A-BA0B-BF84599D8AEE"}
5.2.8 删除权限¶
接口地址
/api/bff/v1.2/developer/ps/permission/delete/{uuid}?access_token={access_token}
接口说明
删除一个现有权限。注意,当拥有子权限时,不可直接删除。
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
uuid |
string |
是 |
9b63a96ee5aa800641b5a4a |
待删除的角色全局唯一标识,资源外部id |
返回参数
无。
示例
请求示例
{base_url}/api/bff/v1.2/developer/ps/permission/delete/88a7c4c820d7fc0a2020ce52ccd89414pq3vQqM0uA8?access_token=bd3a80ca-24c3-4da8-836f-9efcb2c52c4b
正常返回示例
{"success":true,"code":"200","message":null,"requestId":"51331044-A2FE-474A-BA0B-BF84599D8AEE","data": null}
5.2.9 查询数据权限模型¶
接口地址
GET /api/bff/v1.2/developer/ps/data/module/list
接口说明
获取当前的权限系统中的数据权限模型列表。
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
pageNumber |
string |
是 |
1 |
查询第几页的数据,从 1 开始 |
pageSize |
string |
是 |
10 |
一页包含的数据数量 |
psId |
string |
是 |
fJBzbPjud3 |
PS系统id |
searchVal |
string |
否 |
data_permission |
通过权限模型名称搜索权限模型 |
返回参数
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
List |
Array |
见下面LIST表 |
|
currentPage |
int |
1 |
当前页数,从 1 开始 |
totalSize |
int |
2 |
总角色数量 |
pageSize |
int |
10 |
一页包含的角色数量 |
perPageSize |
int |
10 |
当前请求时参数返回 |
psId |
string |
hU2czV4pMR |
当前 PS 系统 id |
list 表:
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
uuid |
string |
4c9b9f14e82a5d4978d5ed229ec1ae4d6912xmCXA1l |
权限全局唯一标识 |
moduleName |
string |
订单模型 |
权限模型名称,最长64字符,不能为空 |
moduleValue |
string |
order_module |
权限模型值,同一个权限系统内,模型值是唯一的,最长64字符,不能为空 |
description |
string |
定义可对订单数据 |
权限模型描述 |
addOperationCollection |
Array |
见下面operationCollection表 |
数据权限操作列表 |
operationCollection 表:
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
uuid |
string |
4c9b9f14e82a5d4978d5ed229ec1ae4d6912xmCXA1l |
操作类型uuid |
psDataModuleUuid |
string |
4c9b9f14e82a5d4978d5ed229ec1ae4d6912xmCXA1l |
权限模型uuid |
operationName |
string |
接单 |
操作类型名,最长64字符,不能为空 |
operationValue |
string |
Orders |
操作类型值,同一个权限模型内,操作类型值是唯一的,最长64字符,不能为空 |
示例
请求示例
{base_url}/api/bff/v1.2/developer/ps/data/module/list?psId=8xvL7oHcB2&pageNumber=1&pageSize=10&access_token={access_token}
正常返回示例
{"success":true,"code":"200","message":null,"requestId":"D537580C-A5A2-4557-AEDD-3294DFB8ECE6","data":{"list":[{"uuid":"0d2d0b9dae26e1902c27e01184273f9aNHs5i5cFOpL","moduleName":"账户操作","moduleValue":"account_opt","description":"","operationCollection":[{"uuid":"7c0d285a9c3bbdd6c0ec4f505cc63e64UNj5j3elucw","psDataModuleUuid":"0d2d0b9dae26e1902c27e01184273f9aNHs5i5cFOpL","operationName":"新建账户","operationValue":"create"},{"uuid":"a273690f2065da91c7e4f485215e5b46aB1mGXwd3Hk","psDataModuleUuid":"0d2d0b9dae26e1902c27e01184273f9aNHs5i5cFOpL","operationName":"离职","operationValue":"lz"}]}],"totalSize":2,"currentPage":1,"pageSize":10,"perPageSize":10,"psId":"hU2czV4pMR"}}
5.2.10 创建数据权限模型¶
接口地址
POST /api/bff/v1.2/developer/ps/data/module
接口说明
向当前的权限系统中新增一个数据权限模型。
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
psId |
string |
是 |
8xvL7oHcB2 |
PS系统Id |
moduleName |
string |
是 |
订单模型 |
权限模型名称,最长64字符,不能为空 |
moduleValue |
string |
是 |
order_module |
权限模型值,同一个权限系统内,模型值是唯一的,最长64字符,不能为空 |
description |
string |
否 |
订单数据 |
描述 |
addOperationCollection |
Array |
是 |
见下面operationCollection表 |
数据权限操作列表 |
operationCollection 表:
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
operationName |
string |
是 |
接单 |
操作类型名,最长64字符,不能为空 |
operationValue |
string |
是 |
Orders |
操作类型值,同一个权限模型内,操作类型值是唯一的,最长64字符,不能为空 |
返回参数
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
uuid |
string |
7dabd9e92a175781072c265aeccfc0f6nmYAtFqciZ8 |
新生成的权限模型uuid 全局唯一标识 |
示例
请求示例
{base_url}/api/bff/v1.2/developer/ps/data/module?access_token=bd3a80ca-24c3-4da8-836f-9efcb2c52c4b
请求入参示例
{"moduleName":"test5","moduleValue":"test5","description":"","psId":"8xvL7oHcB2","addOperationCollection":[{"operationName":"test5","operationValue":"test5"}]}
正常返回示例
{"success":true,"code":"200","message":null,"requestId":"69f0fdcdd9e11c6e","data":"2fa4e76084c066aea16a5057b3fca06c2evTMFP1WmV"}
5.2.11 编辑数据权限模型¶
接口地址
PUT /api/bff/v1.2/developer/ps/data/module?access_token={access_token}
接口说明
编辑当前的权限系统中一个数据权限模型。
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
uuid |
string |
是 |
2fa4e76084c066aea16a5057b3fca06c2evTMFP1WmV |
数据权限模型uuid |
psId |
string |
是 |
8xvL7oHcB2 |
PS系统Id |
moduleName |
string |
是 |
订单模型 |
权限模型名称,最长64字符,不能为空 |
moduleValue |
string |
是 |
order_module |
权限模型值,同一个权限系统内,模型值是唯一的,最长64字符,不能为空 |
description |
string |
否 |
订单数据 |
描述 |
addOperationCollection |
Array |
否 |
见下面operationCollection表 |
添加数据权限操作列表 |
deleteOperationCollection |
Array |
否 |
见下面operationCollection表 |
删除数据权限操作列表 |
operationCollection 表:
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
operationName |
string |
是 |
接单 |
操作类型名,最长64字符,不能为空 |
operationValue |
string |
是 |
Orders |
操作类型值,同一个权限模型内,操作类型值是唯一的,最长64字符,不能为空 |
返回参数
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
uuid |
string |
7dabd9e92a175781072c265aeccfc0f6nmYAtFqciZ8 |
新生成的权限模型uuid 全局唯一标识 |
示例
请求示例
{base_url}/api/bff/v1.2/developer/ps/data/module?access_token=bd3a80ca-24c3-4da8-836f-9efcb2c52c4b
请求入参示例
{"uuid":"2fa4e76084c066aea16a5057b3fca06c2evTMFP1WmV","moduleName":"test5","moduleValue":"test5","description":"","psId":"8xvL7oHcB2","addOperationCollection":[{"operationName":"test5","operationValue":"test8"}]}
正常返回示例
{"success":true,"code":"200","message":null,"requestId":"69f0fdcdd9e11c6e","data":"2fa4e76084c066aea16a5057b3fca06c2evTMFP1WmV"}
5.2.12 删除数据权限模型¶
接口地址
DELETE /api/bff/v1.2/developer/ps/data/module?access_token={access_token}
接口说明
删除一个现有的数据权限模型。
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
uuid |
string |
是 |
2fa4e76084c066aea16a5057b3fca06c2evTMFP1WmV |
数据权限模型uuid |
psId |
string |
是 |
8xvL7oHcB2 |
PS系统Id |
返回参数
无。
示例
请求示例
{base_url}/api/bff/v1.2/developer/ps/permission/delete/88a7c4c820d7fc0a2020ce52ccd89414pq3vQqM0uA8?access_token=bd3a80ca-24c3-4da8-836f-9efcb2c52c4b
请求入参示例
{"uuid":"2fa4e76084c066aea16a5057b3fca06c2evTMFP1WmV","psId":"8xvL7oHcB2"}
正常返回示例
{"success":true,"code":"200","message":null,"requestId":"4a6c4d2737e8d1fc","data":null}
5.3 授权管理接口¶
5.3.1 获取指定角色的已关联权限(分页)¶
接口地址
POST /api/bff/v1.2/developer/ps/role_permissions
接口说明
获取指定角色的所有已关联权限。
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
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”:””} |
数据访问权限,当前版本集合值可能为空暂不支持 |
示例
请求示例
{base_url}/api/bff/v1.2/developer/ps/role_permissions
请求入参示例
{ "roleUuid":"447fed833d8739ecb1caf6f38af14e65tthuiDBac88", "pageSize":"2","psId":"hU2czV4pMR","currentPage":"1"}
正常返回
{"success":true,"code":"200","message":null,"requestId":"D537580C-A5A2-4557-AEDD-3294DFB8ECE6","data":{"list":[{"uuid":"65f9e06df1a1cb04133845fd47e35196WUjqj9nkA1P","parentPermissionUuid":null,"name":"打印—户籍卡","permissionValue":"print_card","remark":null,"relationUrl":null,"type":"menu"},{"uuid":"540cf6e8b05b09b3938f865b33ab30d1GsMhz5NkVTq","parentPermissionUuid":"65f9e06df1a1cb04133845fd47e35196WUjqj9nkA1P","name":"本地的","permissionValue":"local","relationUrl":null,"remark":null,"type":"menu"}],"totalSize":2,"currentPage":1,"pageSize":10,"perPageSize":10}}
5.3.2 把人授权到角色¶
接口地址
POST /api/bff/v1.2/developer/ps/role/modify_users?access_token={access_token}
接口说明
新增或者取消人和角色之间的授权关系。
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
roleUuid |
String |
是 |
447fed833d8739ecb1caf6f38af1 |
指定角色,全局唯一标识,角色外部id |
attachedUDAccountUuidCollection |
Array |
否 |
[“09b00e257ede0a38a5f54a94”] |
想要增加授权到该角色的账号全局唯一标识数组 |
detachedUDAccountUuidCollection |
Array |
否 |
[“09b00e257ede0a38a5f54a94”] |
想要取消授权该角色的账号,全局唯一标识数组 |
attachedUsernameCollection |
Array |
是 |
[“zhang_san”] |
想要增加授权到该角色的账号识数组 |
detachedUsernameCollection |
Array |
是 |
[“li_si”] |
想要取消授权该角色的账号数组 |
返回参数
无。
示例
请求示例
{base_url}/api/bff/v1.2/developer/ps/role/modify_users?access_token=bd3a80ca-24c3-4da8-836f-9efcb2c52c4b
请求入参示例
{
"attachedUDAccountUuidCollection":["09b00e257ede0a38a5f54a94c4d64000EwQtyG8nUWw"],
"detachedUDAccountUuidCollection":["90d99090309433adeaf4a94c4d64000EwQtyG8nUWw"],
"attachedUsernameCollection":[ "zhang_san","li_si"],
"detachedUsernameCollection":["wang_wu","zhao_liu"],
"roleUuid":"447fed833d8739ecb1caf6f38af14e65tthuiDBac88"
}
正常返回
{ "success": true, "code": "200", "message": null, "requestId": "D537580C-A5A2-4557-AEDD-3294DFB8ECE6"}
5.3.3 把权限关联到角色¶
接口地址
POST api/bff/v1.2/developer/ps/role/modify_permissions?access_token={access_token}
接口说明
建立权限和角色之间的关联关系。
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
roleUuid |
String |
是 |
447fed833d8739ecb1caf6f38af1 |
指定角色 全局唯一标识,角色外部id |
attachedPermissionUuidCollection |
Array |
否 |
[“tyG8nUWw”] |
想要新增权限 全局唯一标识数组,资源外部id |
detachedPermissionUuidCollection |
Array |
否 |
[“tyG8nUWw”] |
想要取消权限 全局唯一标识数组,资源外部id |
返回参数
无。
示例
请求示例
{your-idaas-domain} api/bff/v1.2/developer/ps/role/modify_permissions?access_token={access_token}
请求入参示例
{
"roleUuid":"447fed833d8739ecb1caf6f38af14e65tthuiDBac88",
"attachedPermissionUuidCollection":["65f9e06df1a1cb04133845fd47e35196WUjqj9nkA1P","540cf6e8b05b09b3938f865b33ab30d1GsMhz5NkVTq"],
"detachedPermissionUuidCollection":["12f9e06df1a1cb04166666fd47e35196WUjqj9nkAee","340cf6e8b05b09b397890qeb33ab30d1GsMhz5NkVar"]
}
正常返回
{"success": true,"code": "200","message": null,"requestId": "D537580C-A5A2-4557-AEDD-3294DFB8ECE6","data": null}
5.3.4 获取指定权限节点下,用户已授权的权限¶
接口地址
POST /api/bff/v1.2/developer/ps/listSubLevelPermissions
接口说明
获取一个指定权限节点下,一个用户的所有已授权的权限。
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
username |
String |
是 |
michael |
指定用户的账户名 |
permissionValue |
String |
否 |
print_card |
指定父级权限节点的权限值 |
psId |
String |
是 |
SAFKJkljL |
系统详情处可见 |
type |
String |
否 |
ALL,button,menu |
权限类型 |
返回参数
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
permissions |
Array |
角色列表 |
|
└uuid |
string |
4c9b9f14e82a5d4978d5ed229ec1ae4d6912xmCXA1l |
权限 uuid |
└parentPermissionUuid |
string |
978d5ed229ec1ae4d6912xmCXA1l4c9b9f14e82a5d4 |
父级权限的 uuid |
└name |
string |
测试权限 |
权限名,最长64字符,不可为空 |
└permissionValue |
string |
test_permission |
权限的权限值 |
└remark |
string |
这是一个新的测试权限。 |
权限说明 |
└relationUrl |
string |
http:?/your-domain.com |
资源URL |
└type |
string |
button |
权限类型,菜单/按钮 |
└displayOrder |
long |
0 |
资源排序号,整数,用于排序使用,数字越小越靠前展示 |
dataAccessRules |
string |
暂无使用 |
|
children |
Array |
当前资源的子级资源 |
当前资源的直属子级资源列表 |
示例
请求示例
{base_url}/api/bff/v1.2/developer/ps/listSubLevelPermissions
请求入参示例
{ "roleUuid":"447fed833d8739ecb1caf6f38af14e65tthuiDBac88", "username":"michael", "permissionValue":"print_card","psId":"hU2czV4pMR"}
正常返回
{"success":true,"code":"200","message":null,"requestId":"D537580C-A5A2-4557-AEDD-3294DFB8ECE6","data":{"permissions":[{"uuid":"65f9e06df1a1cb04133845fd47e35196WUjqj9nkA1P","parentPermissionUuid":null,"name":"打印—户籍卡","permissionValue":"print_card","remark":null,"relationUrl":null,"type":"menu"},{"uuid":"540cf6e8b05b09b3938f865b33ab30d1GsMhz5NkVTq","parentPermissionUuid":"65f9e06df1a1cb04133845fd47e35196WUjqj9nkA1P","name":"本地的","permissionValue":"local","remark":null,"relationUrl":null,"type":"menu"}]}}
5.3.5 获取角色所有已授权用户(分页)¶
接口地址
POST /api/bff/v1.2/developer/ps/role_users
接口说明
获取角色所有已授权用户。
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
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 |
一页包含的角色数量 |
示例
请求示例
{base_url}/api/bff/v1.2/developer/ps/role_users
请求入参示例
{ "roleUuid":"447fed833d8739ecb1caf6f38af14e65tthuiDBac88","psId":"SAFJASJk","currentPage":"1","pageSize":"10"}
正常返回
{
"success": true,
"code": "200",
"message": null,
"requestId": "D537580C-A5A2-4557-AEDD-3294DFB8ECE6",
"data": {
"list": [{
"udAccountUuid":"09b00e257ede0a38a5f54a94c4d64000EwQtyG8nUWw",
"username": "fufu033",
"displayName": "付付 023"
},{
"udAccountUuid": "dab27222a6cd330ff25dc4b6c4a21dcarH8a17zqk3z",
"username": "michael",
"displayName": "Michael_updated"
}],
"totalSize": 2,
"currentPage": 1,
"perPageSize": 10,
"pageSize": 10
}
}
5.3.6 获取权限系统指定用户的角色和权限¶
接口地址
POST /api/bff/v1.2/developer/ps/user_role_permissions
接口说明
获取用户已授权的角色和权限。
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
username |
String |
是 |
Zhangsan |
指定的用户名 |
psId |
String |
是 |
SAFJASJk |
系统id,详情处可见 |
返回参数
返回的参数中前者 permission 为当前用户授权的权限,后者 rolePermissions 为当前用户授权的角色和权限的集合。
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
permission |
Array |
授权的角色和对应的权限 |
权限列表 |
└uuid |
string |
978d5ed229ec1ae4d6912xmCXA1l4c9b9f14e82a5d4 |
IDaaS 系统内 权限的全局唯一标识 |
└name |
string |
Add用户 |
权限名称 |
└remark |
string |
Add user test |
备注 |
└relationUrl |
string |
http:?/your-domain.com |
资源URL |
└permissionValue |
string |
ADD |
权限值 |
└type |
string |
Menu |
类型,menu,button等 |
└dataAccessRules |
string |
暂无使用 |
|
roles |
Array |
角色列表,当前暂不支持单独字段赋值 |
|
rolePermissions |
Array |
授权的角色以及角色已授权的权限资源 |
|
└uuid |
string |
978d5ed229ec1ae4d6912xmCXA1l4c9b9f14e82a5d4 |
|
└name |
string |
管理员 |
已授权角色名称 |
└remark |
string |
Add user test |
备注 |
└permissionValue |
string |
ManagerUser |
角色值 |
└enabled |
boolean |
true |
禁用状态 |
└permissions |
Array |
角色已授权的权限 |
示例
请求示例
{base_url}/api/bff/v1.2/developer/ps/user_role_permissions
请求入参示例
{"psId":"SAFJASJk","username":"michael"}
正常返回
{
"success": true,
"code": "200",
"message": null,
"requestId": "BC8EF781-56CA-4EA4-95FB-BE19A9832A84",
"data": {
"username": "test007",
"permissions": [{
"uuid": "63c50099cef91f569829ad8908cf61b3f8KQBJVuhhQ",
"parentPermissionUuid": null,
"name": "添加用户权限",
"permissionValue": "ADD_USER",
"remark": null,
"relationUrl": null,
"type": "menu","dataAccessRules": []
}],
"roles": [{
"roleUuid": "9736d72a5f60d290bf36992457fba89575ggd7Hwm2Z",
"roleName": "管理员",
"systemUuid": "f23dc095f8baf6eab9678befc028dfeaKP74JasTshx",
"permissionValue": "ROLE_M",
"remark": ""
}]
}
}
5.3.7 资源授权给实体¶
接口地址
POST /api/bff/v1.2/developer/ps/app/authorization/update_entity_privilege
接口说明
将资源。
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
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 |
是 |
List |
权限列表 |
└privilegeUuid |
string |
是 |
9736d72a5f60d290bf36992457fba89575ggd7Hwm2Z |
权限uuid |
dataItemOperation 表:
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
psPrivilegeUuid |
string |
是 |
a60e86e4aa1e2d1a52363fe72131c422exG6MhAlrqb |
数据权限的权限uuid |
psDataModuleValue |
string |
是 |
List |
数据权限模型值 |
attachedPSDataOperationValueCollection |
Array |
是 |
List |
操作类型值列表,如果是取消授权使用detachedPSDataOperationValueCollection |
返回参数
无。
示例
请求示例
{base_url}/api/bff/v1.2/developer/ps/app/authorization/update_entity_privilege?access_token=bd3a80ca-24c3-4da8-836f-9efcb2c52c4b
请求入参示例
{"entityUuid":"f7cd1f3ae7edfe52c1c674001026364aacfs4HtB0Oz","entityType":"UD_ACCOUNT","psId":"8xvL7oHcB2","forwardRemovePrivilegeUuidCollection":[],"forwardAddPrivilegeUuidCollection":[{"privilegeType":"PS_PERMISSION","authorizations":[{"privilegeUuid":"24091a0e98dd0d254125772b866923d6at9ii1qt03D"}]}],"reverseAddPrivilegeUuidCollection":[],"reverseRemovePrivilegeUuidCollection":[],"forwardAddDataItemOperation":[],"forwardRemoveDataItemOperation":[],"reverseAddDataItemOperation":[],"reverseRemoveDataItemOperation":[]}
正常返回示例
{"success":true,"code":"200","message":null,"requestId":"1666241598145$96170aec-f8ec-b593-a210-2af47a357f60","data":null}
5.3.8 查询已授权列表¶
接口地址
GET /api/bff/v1.2/developer/ps/app/authorization/ps_system/idaas/list_entity_privilege
接口说明
查询已授权内容,查询数据权限时需要privilegeType需要填写数据权限值,并且填写dataModulePrivilegeUuid字段
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
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 |
示例
请求示例
{base_url}/api/bff/v1.2/developer/ps/app/authorization/ps_system/idaas/list_entity_privilege?entityUuid=f7cd1f3ae7edfe52c1c674001026364aacfs4HtB0Oz&entityType=UD_ACCOUNT&psId=8xvL7oHcB2&privilegeType=PS_PERMISSION&includeInherited=true&limitPrivilegeUuidCollection=51c4044b6ff49e962e5e830d74a53d2dtwRdi61xJmI
正常返回
{
"success": true,
"code": "200",
"message": null,
"requestId": "BC8EF781-56CA-4EA4-95FB-BE19A9832A84",
"data": {
"list": [
{
"checkStatus": "INHERIT_ALLOW",
"parentPermissionUuid": "d6a273ffed52cf1ca16f46d126a02141VYrtO67Kc3U",
"permissionName": "app_test",
"permissionUuid": "51c4044b6ff49e962e5e830d74a53d2dtwRdi61xJmI",
"privilegeType": "app_test",
"psDataModuleUuid": "8d1cff94a8d7a291b5625b466c12319duf0wQUNno3E",
"psDataModuleValue": "app_per",
"type": "data"
}
]
}
}
5.4 鉴权接口¶
5.4.1 判断用户是否有角色¶
接口地址
POST /api/bff/v1.2/developer/ps/has_role
接口说明
判断用户是否拥有某角色。
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
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,详情处可见 |
返回参数
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
data |
Boolean |
True |
是否已有授权关系 |
示例
请求示例
{base_url}/api/bff/v1.2/developer/ps/has_role
请求入参示例
{"roleUuid": "540cf6e8b05b09b3938f865b33ab30d1GsMhz5NkVTq","psId":"SAFJASJk","username": "michael"}
正常返回
{"success": true,"code": "200","message": null,"requestId": "76C29BF5-3236-4C17-9C0D-92834AC12B73","data": false}
5.4.2 根据权限 uuid 判断用户是否有权限¶
POST /api/bff/v1.2/developer/ps/has_permission
接口说明
判断用户是否拥有某权限。
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
permissionUuid |
String |
是 |
447fed833d8739ecb1caf6f38af14e65tthuiDBac88 |
指定权限全局唯一标识 |
username |
String |
是 |
michael |
指定账号的用户名 |
psId |
String |
是 |
ASFjasds |
系统id,系统详情处可见 |
返回参数
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
hasPermission |
Boolean |
false |
是否已有授权关系 |
示例
请求示例
{base_url}/api/bff/v1.2/developer/ps/has_permission
请求入参示例
{ "permissionUuid": "540cf6e8b05b09b3938f865b33ab30d1GsMhz5NkVTq","psId":"ASFjasds","username": "michael"}
正常返回
{ "success": true, "code": "200", "message": null,"requestId": "76C29BF5-3236-4C17-9C0D-92834AC12B73", "data": {"hasPermission":true}}
5.4.3 根据权限值判断用户是否有权限¶
接口地址
POST /api/bff/v1.2/developer/ps/isUserHasPermission
接口说明
通过权限值来判断用户是否拥有某权限/角色。
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
permissionValue |
String |
是 |
test_permission |
指定权限的权限值 |
username |
String |
是 |
09b00e257ede0a38a5f54a94c4d64000EwQtyG8nUWw |
指定账号的用户名 |
psId |
String |
是 |
KDJDJSSKK |
系统id,详情处可见 |
返回参数
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
data |
Boolean |
false |
是否已有授权关系 |
示例
请求示例
{base_url}/api/bff/v1.2/developer/ps/isUserHasPermission
请求入参示例
{ "permissionValue": "print_card","psId":"KDJDJSSKK","username": "michael"}
正常返回
{"success": true, "code": "200", "message": null, "requestId": "76C29BF5-3236-4C17-9C0D-92834AC12B73", "data": true}
5.4.4 判断用户是否有指定权限的指定操作¶
接口地址
POST /api/bff/v1.2/developer/ps/has_permission_operation
接口说明
根据用户名,判断是否有指定权限的指定操作,例如:zhangsan 是否有”某个菜单”的查看权限。
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
access_token |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
|
permissionUuid |
String |
是 |
test_permission |
指定权限的权限唯一值 |
username |
String |
是 |
09b00e257ede0a38a5f54a94c4d64000EwQtyG8nUWw |
指定账号的用户名 |
psId |
String |
是 |
KDJDJSSKK |
系统id,详情处可见 |
operationValue |
String |
是 |
Chakan |
某个操作值,调用/operations接口可获取用户在某个权限下的所有操作列表。 |
返回参数
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
data |
Boolean |
false |
是否有指定的操作,true 代表有,false 没有。 |
示例
请求示例
{base_url}/api/bff/v1.2/developer/ps/has_permission_operation
请求入参示例
{"psId":"hU2czV4pMR","username":"crm_user2_9","permissionUuid":"200000031"}
正常返回
{"success": true, "code": "200", "message": null, "requestId": "76C29BF5-3236-4C17-9C0D-92834AC12B73", "data": true}
5.5 接口后置¶
5.5.1 验证用户 accessToken 是否过期¶
接口地址
POST /api/public/bff/oauth/token_validation
接口说明
验证用户的 accessToken 是否失效或已过期。
请求参数
参数 |
类型 |
必须 |
示例值 |
描述 |
---|---|---|---|---|
accessToken |
string |
是 |
bd3a80ca-24c3-4da8-836f-9efcb2c52c4b |
用户的 accessToken 值 |
返回参数
参数 |
类型 |
示例值 |
描述 |
---|---|---|---|
username |
string |
验证成功后返回该accessToken 对应的用户名 |
验证成功后会返回用户名。 |
errorCode |
Int |
错误码 |
错误码:0 代表 accessToken 正常,301:错误的 accessToken, 305:请求参数检查失败 |
FAQ¶
下图中的Account uuid如何获取
按F12打开控制台,访问账户的详情,查看uuid
建议使用username字段,直接对应账户名称。