产品部署之中台服务对接数据初始化相关接口的说明

说明

本文档,为中台产品在部署时,提供对接数据初始化的相关接口

主要涉及:

  1. CAS认证,创建 Servcie

  2. 授权服务,创建 应用,应用角色

  3. 云平台菜单,创建 应用,菜单,角色权限的关联

数据初始化接口说明

CAS认证

采用 sql 文件执行接口进行部署

版本要求:1.2.2

  • 部署接口
curl -i -s -X POST \
  -H 'Content-Type: text/plain' \
  --data-binary @cas_server_integrate.sql \
  'http://cas-server-sa.cas-server.svc.cluster.local:8080/deploy/execSql'
  • SQL脚本示例

cas_server_integrate.sql

-- Service 的创建
INSERT INTO TB_SERVICE (ID, COMPANY_ID, DELETED, ADD_ACCOUNT, ADD_TIME, 
  NAME, DESCRIPTION, INFORMATION_URL, LOGOUT_URL, 
  RESPONSE_TYPE, LOGOUT_TYPE, 
  EVALUATION_ORDER, FRIENDLY_NAME, REGISTERED_SERVICE_ID, SERVICE_ID, 
  ENABLED, SSO_ENABLED, REQUIRE_ALL_ATTRIBUTES, 
  ID_TOKEN_ENABLED, JWT_AS_SERVICE_TICKET, ADAPT_V4_PRODUCT, 
  APPLICATION_ID, APPLICATION_DOMAIN, EXTERNAL_ID)
VALUES ('0', '1', 0, 'admin', null,
  '示例', '示例', 'https://example.com', 'https://example.com/slo', 
  'REDIRECT', 'FRONT_CHANNEL', 
  0, '示例', 0, 'https://example.com/(.*)', 
  1, 1, 1, 
  0, 0, 0, 
  '0', 'example.com', '0');

commit;

说明

修改 ID、EVALUATION_ORDER、REGISTERED_SERVICE_ID、APPLICATION_ID、EXTERNAL_ID,应用的ID、标识等

修改 NAME、DESCRIPTION、FRIENDLY_NAME,应用的名称

修改 ID_TOKEN_ENABLED、JWT_AS_SERVICE_TICKET,1 启用,0 禁用

修改 INFORMATION_URL、LOGOUT_URL、SERVICE_ID、APPLICATION_DOMAIN,相关地址、域名修改

应用对接表 TB_SERVICE

字段名 | 字段说明

  • | - ID | 确保唯一性 COMPANY_ID | 固定为 1 DELETED | 是否删除,固定为 0 ADD_ACCOUNT | 创建帐号 ADD_TIME | 创建时间,建议为 null;如必要,可填入时间
  • | - NAME | 应用名称 DESCRIPTION | 描述 INFORMATION_URL | 应用的访问地址 LOGOUT_URL | 应用的前端注销地址 RESPONSE_TYPE | 登录成功后的响应方式,固定为 REDIRECT LOGOUT_TYPE | 单点注销方式,固定为 FRONT_CHANNEL EVALUATION_ORDER | 优先级 FRIENDLY_NAME | 同 应用名称 REGISTERED_SERVICE_ID | 唯一ID,整型 SERVICE_ID | 应用匹配规则,确保前缀与对接时的 service 相匹配 ENABLED | 是否启用 SSO_ENABLED | 是否支持单点登录 REQUIRE_ALL_ATTRIBUTES | 固定为 true ID_TOKEN_ENABLED | 是否返回 ID Token,方便公司内产品的前端,调用后端接口 JWT_AS_SERVICE_TICKET | 是否返回 JWT 格式的票据,便于纯前端项目对接 ADAPT_V4_PRODUCT | 是否适配认证V4,用于兼容公司历史版本的认证 APPLICATION_ID | 应用标识,与 ID 保持一致 APPLICATION_DOMAIN | 应用域,使用访问地址中的 域名 EXTERNAL_ID | 外部ID(预留),与 ID 保持一致

授权服务

采用 sql 文件执行接口进行部署

版本要求:1.2.3

  • 部署接口
curl -i -s -X POST \
  -H 'Content-Type: text/plain' \
  --data-binary @user_authz_integrate.sql \
  'http://authx-service-user-authz-service-sa.authx-service.svc.cluster.local:8080/deploy/execSql'
  • SQL脚本示例

user_authz_integrate.sql

-- 应用的创建脚本
INSERT INTO TB_R_SYSTEM (ID, COMPANY_ID, DELETED, ADD_ACCOUNT, ADD_TIME, 
  BUSINESS_DOMAIN_ID, 
  CODE, NAME, ENABLED)
VALUES ('0', '1', 0, 'init', null, 
  '1', 
   '0', '示例系统', 1);

INSERT INTO TB_APPLICATION (ID, COMPANY_ID, DELETED, ADD_ACCOUNT, ADD_TIME, 
  BUSINESS_DOMAIN_ID, SYSTEM_ID, 
  NAME, APPLICATION_ID, SYNC_URL, ENABLED)
VALUES ('0', '1', 0, 'init', null, 
  '1', '0', 
  '示例应用', '0', '', 1);

commit;

-- 应用角色的创建脚本
INSERT INTO TB_ROLE (ID, COMPANY_ID, DELETED, ADD_ACCOUNT, ADD_TIME, 
  APPLICATION_ID, CODE, NAME, DESCRIPTION, ENABLED, EXTERNAL_ID)
VALUES ('0', '1', 0, 'init', null, 
  '0', 'example-admin', '示例管理员', '示例管理员', 1, '0');

commit;

系统信息表 TB_R_SYSTEM

字段名 | 字段说明

  • | - ID | 确保唯一性 COMPANY_ID | 固定为 1 DELETED | 是否删除,固定为 0 ADD_ACCOUNT | 创建帐号 ADD_TIME | 创建时间,建议为 null;如必要,可填入时间
  • | - BUSINESS_DOMAIN_ID | 所属业务域,暂时固定为 1 CODE | 系统代码 NAME | 系统名称 ENABLED | 是否启用(1 启用,0 禁用)

应用信息表 TB_APPLICATION

字段名 | 字段说明

  • | - ID | 确保唯一性 COMPANY_ID | 固定为 1 DELETED | 是否删除,固定为 0 ADD_ACCOUNT | 创建帐号 ADD_TIME | 创建时间,建议为 null;如必要,可填入时间
  • | - BUSINESS_DOMAIN_ID | 所属业务域,暂时固定为 1 SYSTEM_ID | 所属系统,同 TB_R_SYSTEM 的 ID NAME | 应用名称 APPLICATION_ID | 应用标识,可以与 ID 保持一致 SYNC_URL | 角色数据的同步接口。若不需要,可以为空 ENABLED | 是否启用(1 启用,0 禁用)

角色表 TB_ROLE

字段名 | 字段说明

  • | - ID | 确保唯一性 COMPANY_ID | 固定为 1 DELETED | 是否删除,固定为 0 ADD_ACCOUNT | 创建帐号 ADD_TIME | 创建时间,建议为 null;如必要,可填入时间
  • | - APPLICATION_ID | 所属应用,同 TB_APPLICATION 的 ID CODE | 角色代码 NAME | 角色名称 DESCRIPTION | 角色描述 ENABLED | 是否启用(1 启用,0 禁用) EXTERNAL_ID | 对应所在应用内的数据的ID

云平台菜单、操作

采用业务管理接口进行部署

版本要求:1.2.0

  • 部署接口

创建应用

curl -i -s -X POST \
  -H 'Content-Type: application/json' \
  -d '{"id": "0", "code": "0", "name":"示例", "memo":"示例", "status":"1", "url":""}' \
 'http://admin-platform-admin-center-sa.admin-platform.svc.cluster.local:8080/v1/admin/applications'

导入菜单

curl -i -s -X POST \
  -H 'Content-Type: application/json' \
  -d '{
  "applicationId": "0",
  "menuList": 
    [
      {
        "id": "0-10000", "parentIdOrCode":"1", "code": "example-10000", "name": "示例一级", "memo": "", "status": "1", 
        "icon": "", "origin": "http://admin-platform.paas.xxx.edu.cn", "url": "/", "target": "", 
        "order": 10000, "resourceIdOrCodes": []
      },
      {
        "id": "0-10100", "parentIdOrCode":"0-10000", "code": "example-10100", "name": "示例二级", "memo": "", "status": "1", 
        "icon": "su-icon-denglupeizhi", "origin": "http://admin-platform.paas.xxx.edu.cn", "url": "/example/example-10100", "target": "", 
        "order": 10100, "resourceIdOrCodes": []
      },
    ……
    ]
}' \
  'http://admin-platform-admin-center-sa.admin-platform.svc.cluster.local:8080/v1/admin/menus/importMenu'

导入操作(按钮权限)

curl -i -s -X POST \
  -H 'Content-Type: application/json' \
  -d '{
  "applicationId": "0",
  "operationList": 
    [
      {
        "id": "0-10000-10001", "parentIdOrCode":"0-10000", "code": "example-10000-10001", "name": "示例一级-操作", "memo": "", "status": "1", 
        "order": 10001, "resourceIdOrCodes": []
      },
      {
        "id": "0-10100-10101", "parentIdOrCode":"0-10100", "code": "example-10100-10101", "name": "示例二级-操作", "memo": "", "status": "1", 
        "order": 10101, "resourceIdOrCodes": []
      },
    ……
    ]
}' \
  'http://admin-platform-admin-center-sa.admin-platform.svc.cluster.local:8080/v1/admin/operations/importOperation'

导入资源

curl -i -s -X POST \
  -H 'Content-Type: application/json' \
  -d '{
  "applicationId": "0",
  "resourceList": 
    [
      {
        "id": "0-10001", "code": "example-10001", "name": "示例资源一", "memo": "", "status": "1", 
        "origin": "http://admin-platform.paas.xxx.edu.cn", "method": "GET", "path": "/api/v1/example/10001", "access": "authenticate", 
        "order": 10001, "resourceIdOrCodes": []
      },
      {
        "id": "0-10002", "code": "example-10002", "name": "示例资源二", "memo": "", "status": "1", 
        "origin": "http://admin-platform.paas.xxx.edu.cn", "method": "GET", "path": "/api/v1/example/10001", "access": "authenticate", 
        "order": 10002, "resourceIdOrCodes": []
      },
    ……
    ]
}' \
  'http://admin-platform-admin-center-sa.admin-platform.svc.cluster.local:8080/v1/admin/resources/importResource'

角色权限(关联菜单、操作)

curl -i -s -X POST \
  -H 'Content-Type: application/json' \
  -d '{
  "rolePermissionList": 
    [
      {
        "roleCode":"example-admin", 
        "permissionIdOrCodes": ["0-10000", "0-10100", "0-10000-10001", "0-10100-10101"]
      },
    ……
    ]
}' \
  'http://admin-platform-admin-center-sa.admin-platform.svc.cluster.local:8080/v1/admin/rolePermissions/importRolePermission'
  • 接口 属性说明

应用的属性说明

属性名 | 说明

  • | - id | 确保唯一性 code | 应用标识,与 id 保持一致 name | 应用名称 memo | 描述 status | 状态(1 启用,0 停用)

菜单的属性说明

属性名 | 说明

  • | - id | 确保唯一性 parentIdOrCode | 上级菜单的ID 或 代码 code | 菜单代码 name | 菜单名称 memo | 描述 status | 状态(1 启用,0 停用) icon | 图标 CSS 名 origin | 归属域名,一般为 admin-platform 的域名 url | 菜单地址、路由 target | 打开方式,空 表示当前窗口直接打开;iframe 表示在iframe中打开 order | 排序 resourceIdOrCodes | 关联的资源(后端接口)的ID 或 代码。数组,可以为空

操作的属性说明

属性名 | 说明

  • | - id | 确保唯一性 parentIdOrCode | 上级菜单的ID 或 代码 code | 操作代码 name | 操作名称 memo | 描述 status | 状态(1 启用,0 停用) order | 排序 resourceIdOrCodes | 关联的资源(后端接口)的ID 或 代码。数组,可以为空

资源的属性说明

属性名 | 说明

  • | - id | 确保唯一性 parentIdOrCode | 上级菜单的ID 或 代码 code | 资源代码 name | 资源名称 memo | 描述 status | 状态(1 启用,0 停用) origin | 归属域名,一般为 admin-platform 的域名 method | GET, POST, PUT, DELETE 四选一 path | 资源的请求路径 access | 访问规则。anonymous, 匿名访问(未登录时,可访问);authenticate, 认证访问(登录后,可访问);authorize, 授权访问(须授权后,可访问);permitAll, 允许所有(都可访问);denyAll, 拒绝所有(都不可访问)。

角色权限的属性说明

属性名 | 说明

  • | - roleId | 角色ID roleCode | 角色代码 permissionIdOrCodes | 关联的菜单的ID 或 代码。数组