集成外部服务

  1. 创建集成用户,下发集成用户名、密码和平台地址
    • 平台管理员在平台中创建用户,并给用户分配集成角色。所有外部系统可以共用同一个集成用户,也可以每个外部系统创建一个集成用户。
    • 平台管理员线下将集成用户名、密码和平台地址下发给外部系统维护人员。
  2. 注册外部系统
    • 外部系统提供服务元信息(/serviceMetaInfo)接口,返回外部系统的菜单、角色、权限等信息,用于在平台中的服务注册
    • 平台管理员通过服务注册功能,调用外部系统提供的 serviceMetaInfo 接口,将外部系统的菜单、角色和权限注册到平台中。
  3. 平台管理人员维护组织,组织自动同步到外部系统
    • 外部系统提供接收通知(/notice)接口,用于接收组织变化通知,收到通知后,调用“获取组织增量”接口,获取增量数据或全量数据
    • 平台管理员通过“组织管理”修改组织,提供两种方式发送组织变化的通知
      • 自动通知:设置环境变量实现自动通知,参考《用户服务模块》中环境变量介绍
      • 手工通知:在“企业门户-系统管理-组织用户管理-组织管理”中点击“同步组织”发送组织变化通知。在“企业门户-系统管理-系统配置-组织同步管理”中配置的应用会收到组织变化通知
  4. 外部系统实现相关接口,在合适的时机调用平台接口
    • 外部系统调用平台接口时,需要使用平台管理人员提供的集成用户名和密码登录后再调用平台接口。
    • 平台与外部系统调用安全性机制:
      • 平台调用外部系统的安全性:通过外部系统提供的 apisecret 来实现;
      • 外部系统调用平台的安全性:通过集成用户登录的方式来实现。

服务注册

打开“企业门户-系统管理-服务注册”进行手工注册,注册时需要提交以下参数:

  • 显示名称:服务中文名;
  • 服务地址:此服务地址下需要支持接口,接收通知(/notice)和服务元信息(/serviceMetaInfo)
  • 外部服务秘钥 apisecret:平台服务调用外部服务时,会带 apisecret 参数,外部服务通过 apisecret 保证调用的安全性。

单点登录

  1. 登录 通过门户登录后,在门户菜单中,可以看到注册的外部服务。打开外部服务时,将以浏览器页的方式打开另一个窗口,同时在地址上添加一个参数 token
  2. 获取用户信息 外部服务通过获取用户信息接口,获取当前登录用户的详细信息,接口参考“平台服务接口-获取用户信息”。
  3. 验证 token 外部服务通过验证 token 接口判断当前是否登录,外部服务需要在自己的后台调用验证 token 接口,从而保证用户注销后外部服务也不能访问。
  4. 注销 用户注销后, 登录产生的 token 将失效。

组织同步

组织同步过程如下图所示

平台服务接口

参考《系统集成 API

外部服务接口

示例代码参考《组织同步》中平台同步到第三方的实现接口

接收通知

url: $接入地址/notice?apisecret=$apisecret
method: post
request field:
    apisecret: $apisecret        //注册外部系统时提供的 apisecret
request body(application/json):
    {
        "type": "orgChanged",     //通知类型, 取值范围: 组织变化通知 orgChanged
        "data": {        //通知数据
            "orgDigest": ""    //最新组织镜像的 md5
        }
    }
response status: 200表示成功,其它表示失败

返回服务信息

按照平台要求的格式返回外部系统的菜单、角色和权限

url: $接入地址/serviceMetaInfo?apisecret=$apisecret
method: get
request field:
    apisecret: $apisecret        //注册外部系统时提供的 apisecret
response body(application/json)
    参考数据结构中的“服务元信息”
response status: 200表示成功,其它表示失败

数据结构

用户表 users

参考《组织权限数据表》中的用户表

组织表 orgs

参考《组织权限数据表》中的组织表

组织镜像 misc_orgsnapshot

字段名 类型 说明
id varchar2(36) 主键
createtime datetime 创建时间
content clob 组织镜像
digest varchar2(256) 组织镜像的 md5

服务元信息

参考《服务元信息》中的结构说明,示例代码如下,其中定义了两个菜单、两个权限、一个角色

    "serviceInfo" : {
        "name" : "servicemanager",
        "label" : "微服务管理系统"
    },
    "menu" : {
            "title" : "微服务管理系统",
            "children" : [{
        "types" : ["pcx",”mobile”,"func",”openPage”],
        "color" : "{\"pcx\":\"#fd0808\",\"mobile\":\"#3494F8\"}",
        "icon" : "{\"pcx\":\"AccountBookOutlined\",\"mobile\":\"star-o\"}",
                "title" : "服务管理",
                "url" : "http://servicemanager/x5/UI2/main/fuwu_sj"
            },{
        "ext" : {
            "code" : "finish_notice",
            "more" : {
            "title" : "任务中心",
            "url" : "http://servicemanager/wf/x5/UI2/main/taskCenter?parameter=finished"
            }
        },
        "types" : [ "widget", "pcx" ],
        "title" : "已阅",
        "url" : "http://servicemanager/entry/taskWidget/finishNotice"
            }
    ]
    },
    "authorize" : {
        "permissions" : [{
            "id" : "sm_permission_001",
            "code" : "*:http://servicemanager/x5/UI2/main/fuwu_sj:get",
            "name" : "服务管理",
            "type" : "menu"
        }, {
        "id" : "misc_importOrg",
        "code" : "*:http://servicemanager/entry/misc/org/importOrg:post",
        "name" : "导入组织",
        "type" : "service"
    }],
        "roles" : [{
            "id" :"admin",
            "code" : "admin",
            "name" : "管理员",
            "permissions" : [ "*:http://servicemanager/x5/UI2/main/fuwu_sj:get"]
        }]
    }
}

results matching ""

    No results matching ""