权限系统(PS)

最后更新:2022-01-05

1. 背景

政企人员分工不同,对权限通常希望能严格管控。尤其是新应用的权限模型不是交给业务应用开发人员,为避免因为开发人员的水平导致参差不齐,希望收拢在IT管理人员中统一进行管控,这点在金融、物流、房地产等中尤其明显。IDP产品提供了PS权限模块,实现了三级授权模式,同时对权限的授予过程进行追踪监控,提供权限视图,对一个用户拥有的权限可以一目了然。

2. 概述

针对应用、角色/岗位、数据,IDP产品提供了PS(Policy Server)模块,针对性提出了一二三级授权的概念,以指导用户的权限实践。

image.png

从上图可以看出,IDP产品提供了人员到资源,人员通过组到资源,人员通过角色到资源,一组资源的访问形成角色等多种灵活的方式。

本文档将介绍如何通过API调用,实现一个自己开发业务应用SP, 来调用IDP的PS模块来替代自建的角色和资源管理,实现基于RBAC的二级,三级授权等。第三方接入权限系统流程如下图,具体参考第4节集成流程。

image.png

3. 术语定义

参考:IDP中产品术语介绍

4. 实现原理

第三方应用系统在每次登录和鉴权,均需要通过调用 IDaaS 权限系统 API 接口来获取账号的角色、权限资源来完成统一授权管理。
image.png

5. 场景描述

接下来我们将第三方业务系统 (OA业务系统)与 IDaaS 权限系统对接,完成在 IDaaS 权限平台集中分配账号在 OA 业务系统内的权限。
OA 业务系统的系统资源如下所示:
image.png
OA 业务系统分为 6 大功能模块,不同账号在各个模块的菜单、按钮及其内部数据等资源的可见和使用权限也不一致。例如:

  1. 普通用户,拥有【通讯录】【工作台】【行政办公】【项目管理】等基本权限

  2. 系统管理员,拥有【系统管理】权限

  3. HR 部门管理员,【机构人员管理】权限

需要在 IDaaS 权限平台内对接 OA 业务系统的权限模型,并在 IDaaS 权限平台完成集中授权。

6. 集成流程

6.1. 准备工作

本章节内容需要你已经创建至少一个应用。如果没有创建,请前往左侧应用管理创建一个应用

点击左侧菜单中的权限系统

  1. 点击 【新增系统】。

  2. 选择之前创建的应用,输入权限系统名称, 点击提交。

image.png
image.png
在【OA业务系统】的【详情】中获取 AppKey、AppSecret 用于 API 接口的调用。
API 获取 access_token 方式,请参考 【7 权限系统 API 接口清单】 中 【7.1.1 获取权限系统授权 access_token】。
image.png

6.2. 定义资源

无论是某个功能、菜单、按钮的查看权限、使用权限,还是某些特定数据的访问权限,都属于一种资源(Resource)。资源支持嵌套树形结构。管理员在这里可以新增、导入、删除、编辑资源,也可以为某资源关联到角色使用。
我们需要在 IDaaS 上定义 OA 业务系统的资源,构建权限树。
资源创建方式在 IDaaS 中有 3 种:API 接口方式、管理员手动操作、表格批量导入。
创建好的权限树如下图所示:

6.2.1. 权限资源模型

IDaaS 权限系统将资源分为以下五种类型:
• 菜单
• 按钮
• API
• 数据
• 其他

权限资源类型作用:第三方业务系统可以根据不同的权限资源类型做不同的过滤或展示,需要第三方系统自己实现。例如:
菜单类型权限资源:可作为页面导航栏、二级菜单等页面可见范围控制。
按钮类型权限资源:可作为导出日志报表按钮、新建服务、注销企业等重要功能按钮的权限控制。
API 类型权限资源:可作为控制账户调用API接口权限以及数据权限的管理。如A用户有调用API接口权限,B用户没有调用API接口权限。
数据类型权限资源:支持新建数据模型,对于一个对象的多种操作建模,如订单系统中涉及到委派订单、进度查询等均可在数据模型中定义。

不同账号的数据显示范围也可在行规则、列规则中控制。如某骑手账号只能看到骑手自己的订单,可通过行规则实现。如只获取到北京市朝阳区的骑手账号,可通过列规则实现。

其他类型权限资源满足灵活场景下的自定义需求。

6.2.2. API 接口方式定义资源

创建权限资源请参考 【7 权限系统 API 接口清单】 中 【7.2.6 新增权限
• 创建不同类型的资源(菜单、按钮、API、数据)通过type字段区分,menu 代表菜单权限,button 代表按钮权限,data 代表是数据权限。
• 设置资源的权限值,第三方业务系统可根据权限值判断权限。
编辑权限资源请参考 【7 权限系统 API 接口清单】 中 【7.2.7 编辑权限
删除权限资源请参考 【7 权限系统 API 接口清单】 中 【7.2.8 删除权限

6.2.3. 管理员手动操作

以下流程需要在IDaaS管理界面操作,点击【权限系统】栏目

  1. 点击【OA业务系统】中的【权限资源】

image.png

  1. 点击【新增父级资源】管理员手动操作。

image.png

  1. 在新增资源侧边页,完成新增资源参数的配置

image.png

  1. 点击确定创建成功后,会在资源管理页面展示创建的权限资源。

  2. 选择需要创建子级资源的资源,点击操作栏中的【新增子级资源】。

  3. 在新增资源侧边页,完成新增资源参数的配置。

  4. 点击确定创建成功后,会在资源管理页面展示创建的权限资源,并且路径为之前选择的父级资源。


6.2.4. 表格批量导入

管理员可以在 excel 表格中维护权限资源的基本信息和层级关系,通过使用导入功能批量导入权限资源。

  1. 在权限资源页面,点击导【导入资源】。

image.png

  1. 下载导入格式范例文档,并根据文档填写系统的所有权限资源的信息。

  2. 点击【上传文件】上传填写好的文件。

image.png

  1. 点击导入文件。

  2. 系统会弹窗提示导入结果,并在资源管理页面展示导入成功的资源。


6.3. 定义角色

角色为一定权限的集合,需要先创建角色,在下一步完成权限资源和角色的关联。
在 IDaaS 中定义(创建)角色方式有 3 种:API接口方式、管理员手动操作、表格批量导入。

6.3.1. API 接口方式定义角色

创建权限资源请参考 【7 权限系统 API 接口清单】 中 【7.2.2 新增角色
编辑权限资源请参考 【7 权限系统 API 接口清单】 中 【7.2.3 编辑角色
删除权限资源请参考 【7 权限系统 API 接口清单】 中 【7.2.4 删除角色

6.3.2. 管理员动手操作

以下流程需要在IDaaS管理界面操作,点击【权限系统】栏目
点击【OA业务系统】中的【角色管理】

6.3.2.1. 创建角色

  1. 在角色管理页面,单击【新增角色】。

image.png

  1. 在【新增角色】侧边页,完成以下配置。

  • 名称:为角色命名。角色名称应唯一。

  • 权限值:设置角色的权限值,第三方业务系统可根据权限值判断角色/权限。

  • 状态:是否启用角色。

  • 描述:添加角色备注信息。

  1. 完成配置后,单击【提交】。


6.3.2.2. 编辑角色

  1. 在角色管理页面,定位到要操作的角色,单击其操作列下的【编辑】。

  2. 在【角色管理】侧边页【基本信息】页签下,根据需要修改角色的配置属性。

  3. 修改完配置后,单击【保存】。


6.3.2.3. 删除角色

  1. 在角色管理页面,定位到要操作的角色,单击其操作列下的【删除】。

注意 删除角色之前,需要先禁用该角色

  1. 在提示对话框中,单击【确定】。


6.3.2.4. 批量删除角色

  1. 在角色管理页面,勾选要操作的角色,单击页面下面的【批量删除】。

  2. 在提示对话框中,单击【确定】。


6.3.2.5. 表格批量导入

  1. 在角色管理页面,点击 【导入】-【导入角色】。

image.png

  1. 下载【角色格式范例文档】,并根据文档填写角色基本信息。

  2. 点击【上传文件】,选择填写好的文件。

  3. 点击【导入文件】。

  4. 在【导入角色】侧边页,确认导入数据是否正确,确认无误后点击【确定上传导入】。导入成功后,会在角色管理页面展示导入的角色。


6.4. 角色管理权限

当角色创建完成后,就需要对角色进行授权了,我们将定义好的角色按需要进行权限关联即可,从而建立权限资源 - 角色对应关系。
我们支持角色资源授权方式有 3 种:API接口方式、管理员手动操作、表格批量导入。

6.4.1. API 接口方式资源关联角色

将权限资源关联到角色请参考 【5 权限系统 API 接口清单】 中 【5.3.3 把权限关联到角色】。

6.4.2. 管理员手动操作

以下流程需要在IDaaS管理界面操作,点击【权限系统】栏目
点击【OA业务系统】中的【角色管理】

6.4.2.1. 关联权限

  1. 在【角色管理】页面,点击【某个角色】右侧的【关联权限】按钮。

image.png

  1. 在弹出的页面中选择要关联的权限即可。


6.4.2.2. 表格批量导入

  1. 在角色管理页面,点击【导入】- 【导入角色关联权限】
    image.png
    2. 下载导入角色关联权限格式范例文档,并根据文档填写角色关联权限信息。
    3. 点击上传文件,选择填写好的文件。
    4. 点击【导入文件】。
    5. 在导入角色侧边页,确认导入数据是否正确,确认无误后点击【确定上传导入】。

6.5. 角色关联账户

角色权限关联好后,对账号进行关联,给每个账号关联上相应的角色信息,也可以直接授予账号权限资源。
我们支持角色账号授权方式有 3 种:API 接口方式、管理员手动操作、表格批量导入。

6.5.1. 管理员手动操作

以下流程需要在IDaaS管理界面操作,点击【权限系统】栏目
点击【OA业务系统】中的【授权管理】

  1. 在授权管理页面,可以通过账号、机构、组、分类的维度关联该机构、组、分类内账号的角色和权限资源,也可以通过权限资源和角色维度选择哪些账号、机构、组、分类可以拥有该角色或资源。

image.png
image.png

  1. 点击添加关联,可选择账户,添加账户和角色的关联关系。

添加关联关系后,账户会自动继承角色的权限资源。

  1. 选中再次点击取消关联,可删除账户和角色的关联关系。


6.5.2. 表格批量导入

  1. 在角色管理页面,点击 【导入】-【导入角色成员】

image.png

  1. 下载角色成员格式范例文档,并根据文档填写角色关联账号信息。

  2. 点击【上传文件】,选择填写好的文件

  3. 点击【导入文件】。

  4. 在导入角色侧边页,确认导入数据是否正确,确认无误后点击【确定上传导入】。

到这里我们的授权环节就全部完成了。

6.6. 登录及获取权限

当我们完成以上步骤之后,接下来介绍在账号登录时是如何获取到该账号在 IDaaS 权限系统内的账号权限。

6.6.1. API 方式登录及获取权限

通过调用 IDaaS 权限系统 API 接口来获取账号的角色、权限资源。

  1. 查询当前账户的角色和权限资源列表,请参考 【7 权限系统 API 接口清单】 中 【7.3.6 获取权限系统指定用户的角色和权限】。

  2. 查询被授予的角色所包含的权限资源列表,请参考 【7 权限系统 API 接口清单】 中 【7.3.1 获取指定角色的已关联权限(分页)】。


6.6.2. token 方式登录及获取权限

如果 OA 业务系统是基于 OIDC 协议单点登录的话,我们可以先将 OA 业务系统集成到 IDaaS 平台,将应用绑定到权限系统。

6.7. SP 前端展示

当 OA 业务系统服务端获取该账号的权限信息后,按权限资源情况展示所拥有的菜单、按钮等资源即可。这里会涉及 OA业务系统的研发工作,具体前端展现方式按实际情况即可。通常会有两种方式:

  1. 无权限的功能菜单不展示。

  2. 所有功能菜单展示,但未授权的菜单不可使用,点击提示“无权访问”等提示信息。


6.8. 鉴权

鉴权即当某账号访问某项菜单或按钮时,判断是该账号否具备此权限。例如,张三在登录到 O A业务系统后,当他每次点击 OA 业务系统的功能菜单时,OA 业务系统通过 API 接口向 IDaaS 权限系统查询该账号是否拥有访问此功能菜单的权限,当返回值判断是否可以访问该功能菜单。

6.8.1. 实时鉴权

IDaaS 权限系统提供API接口来服务于 SP 进行鉴权。我们可以使用用户的角色、账户名称、权限外部 ID、权限值来进行鉴权。

  1. 在 IDaaS 权限系统中查询当前账户是否为允许访问该权限资源的角色,请参考 【7 权限系统 API 接口清单】 中 【7.4.1 判断用户是否有角色】。

  2. 根据账号和访问资源的权限值在 IDaaS 权限系统中查询是否有访问权限,请参考 【7 权限系统 API 接口清单】 中 【7.4.3 根据权限值判断用户是否有权限】。

  3. 根据账号和在 IDaaS 权限的外部 ID 查询是否有访问权限,请参考 【7 权限系统 API 接口清单】 中 【7.4.2 根据权限 uuid 判断用户是否有权限】。


6.8.2. 登录时获取全部权限

同时支持在账号登录时获取其全部权限,在第三方应用系统中以 token 方式鉴权。缺点:在一次登录后到 access_token 失效前,均无法保证权限的实时性。
由于浏览器 URL 长度限制,采用 OIDC 协议做认证+授权时,授权的权限列表过长,建议以角色维度授权。
查询当前账户的全部角色和权限资源列表,请参考 【7 权限系统 API 接口清单】 中 【7.3.6 获取权限系统指定用户的角色和权限】。

6.9. 其他API接口清单

  1. 根据权限系统 ID 查询在 IDaaS 权限系统中该权限系统的外部 ID、创建时间等详情信息,请参考 【7 权限系统 API 接口清单】 中 【7.1.2 获取权限系统信息】。

  2. 获取到指定应用权限系统的所有角色,请参考 【7 权限系统 API 接口清单】 中 【7.2.1 获取权限系统的所有角色(分页)】。

  3. 根据账号和权限树的父节点 ID 查询该账号在此节点下的已授权权限,请参考 【7 权限系统 API 接口清单】 中 【7.3.4 获取指定权限节点下,用户已授权的权限】。

  4. 查询某角色的授权账号列表,请参考 【7 权限系统 API 接口清单】 中 【7.3.1 获取角色所有已授权用户(分页)】。

  5. 查看某账号的 access_token 是否过期,请参考 【7 权限系统 API 接口清单】 中 【7.5.2 验证用户 access_token 是否过期】。


7. 权限系统 API 接口清单

7.1. 权限系统全局接口

7.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

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

string

read

固定值

7.1.1.1. 示例

请求示例:

http://{your-idaas-domain}/oauth/token?client_id=78d8be99ef30197c318885d2d1390a6pHn71******&client_secret=96csUmei1g0tL629ufrVMZviFie7NWBOnGYs******&grant_type=client_credentials&scope=read

正常返回示例:

{ "access_token": "bd3a80ca-24c3-4da8-836f-9efcb2c52c4b", "token_type": "bearer", "expires_in": 41177, "scope": "read"}

Postman 请求示例

7.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

权限系统唯一标识

createTime

string

2019-09-14 13:54

权限系统创建时间

archived

boolean

false

逻辑删除,false代表正常,true代表已删除

psId

string

AbcaPSKkss

权限系统id

name

string

43199

权限系统名称

remark

string

这是一个针对应用的权限系统。

权限系统描述

creator

string

admin

权限系统创建人

enabled

boolean

true

是否已启用,true代表启用,false代表禁用

示例
请求示例:

{base_url}/api/bff/v1.2/developer/ps/details?access_token={access_token}

正常返回示例:

{
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "1709178403165$26933b9f-d357-831d-01cc-8ee83ffc3f5e",
  "data": {
    "uuid": "4a729bc38533fb43ce5775c57c254215BoPDQd5tNIv",
    "createTime": "2024-02-29 11:22",
    "archived": false,
    "name": "OA应用",
    "psId": "guaJnwcfXn",
    "remark": null,
    "creator": "test",
    "enabled": true
  }
}

Postman 请求示例

7.2. 角色管理接口

7.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

权限系统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

角色唯一标识(角色外部id)

name

string

测试角色

角色名,同一个权限系统内,角色名是唯一的,最长64字符,不能为空

permissionValue

string

test_role

角色的权限值

remark

string

admin

描述

enabled

boolean

true

是否已启用

示例
请求示例

{base_url}api/bff/v1.2/developer/ps/all_roles?psId=guaJnwcfXn&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,
      "psId": "hU2czV4pMR"
    }
  }

7.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"
    }
  }

7.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"}

7.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}

7.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"
    }
  }

7.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"}

7.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"}

7.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}

7.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"}}

7.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"}

7.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"}

7.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}

7.3. 授权管理接口

7.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}}

7.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"}

7.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}

7.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

Array

暂无使用

children

Array

当前资源的子级资源

当前资源的直属子级资源列表

dataAccessRules :

参数

类型

示例值

描述

type

string

LABEL_PERIOD

行规则:LABEL_PERIOD
列规则:COLUMN_PERIOD

accessRule

string

username=${username}

规则


示例
请求示例

{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"}]}}

7.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
  }
}

7.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": ""
    }]
  }
}

7.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}

7.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"
      }
    ]
  }
}

7.4. 鉴权接口

7.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}

7.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}}

7.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}

7.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}

7.5. 接口后置

7.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:请求参数检查失败

8. FAQ

  1. 下图中的Account uuid如何获取

按F12打开控制台,访问账户的详情,查看uuid


建议使用username字段,直接对应账户名称。