DataEase V2 版本如何与第三方系统进行用户、组织数据的同步对接


飞致云 发布于 2024-03-19 / 269 阅读 / 0 评论 /
DataEase V2 版本如何与第三方系统进行用户、组织数据的同步对接 场景:当您希望将自有系统中的组织和用户同步到 DataEase 中时,可以参考此方案进行处理,对接流程如下图所示。 说明:中间件部分需自行开发,中间件负责进行相关数据的处理以及逻辑对应关系的存储,DataEase 只提供接口文

DataEase V2 版本如何与第三方系统进行用户、组织数据的同步对接

场景:当您希望将自有系统中的组织和用户同步到 DataEase 中时,可以参考此方案进行处理,对接流程如下图所示。

说明:中间件部分需自行开发,中间件负责进行相关数据的处理以及逻辑对应关系的存储,DataEase 只提供接口文档中已有的接口,调用 DataEase 的接口需要使用企业版,DataEase 的 API 接口文档入口如下图所示。

当中间件收到接口请求时,需要将待同步的组织或用户信息存储到中间表,中间表用于记录三方系统的组织、用户数据与 DataEase 中的组织、用户数据的对应关系,这样做的好处是无需改动 DataEase 的源码,方便后续的维护升级。

接口说明:

1、获取 tocken

DataEase 的登陆页面使用的也是此接口,可以在浏览器中通过 F12 控制台查看接口请求进行参考。

这个接口的参数是加密后的用户名和密码,可以直接使用加密后的 admin 的用户和密码,也可以使用动态的用户密码进行加密处理,加密使用的是 RSA 算法,可参考以下步骤进行处理:

(1)获取 dekey

关于如何获取 dekey,可以参考下面接口中的逻辑进行获取(本质上是获取数据库中的密钥后进行处理,得到了dekey)。

(代码地址:https://github.com/dataease/dataease/blob/dev-v2/core/core-backend/src/main/java/io/dataease/home/RestIndexController.java

密钥存储在表 core_rsa 中,可以进入 DataEase 的数据库查询表中的数据,获取密钥(PublicKey,AesKey)。

获取密钥后对密钥进行处理(详细逻辑请克隆 DataEase 开源代码后进行查看,项目地址:https://github.com/dataease/dataease )。

public static String publicKey() {
        String publicKey = ”#PublicKey“;
        String aesKey =  ”#AesKey“;
        String pk = ascEncrypt(publicKey, aesKey).replaceAll("[\\s*\t\n\r]", "");
        String separator = Base64Utils.encodeToUrlSafeString(PK_SEPARATOR.getBytes(StandardCharsets.UTF_8));
        return pk + separator + aesKey;
}

(2)对用户名、密码进行加密

const name = state.loginForm.username.trim()
const pwd = state.loginForm.password
 
// 对用户名密码进行加密,name 用户名,pwd 密码
const param = { name: rsaEncryp(name), pwd: rsaEncryp(pwd) }

相关代码地址:https://github.com/dataease/dataease/blob/dev-v2/core/core-frontend/src/utils/encryption.ts

// 加密方法 rsaEncryp
export const rsaEncryp = word => {
  const separator = Base64.encodeURI(rsaKey) + '='
  // dekey 需要获取
  const dekey = “#替换为第一步获取到的dekey”
  const keyArray = dekey.split(separator)
  const k1 = keyArray[0]
  const k2 = keyArray[1]
  const pk = aesDecrypt(k1, k2)
  crypt.setKey(pk)
  return crypt.encrypt(word)
}

(3)调用登陆接口进行登陆

接口地址:/de2api/login/localLogin

参数:用户名、密码,即上一步中加密后的用户名、密码

示例:以下是通过 Postman 调用登陆接口的实际测试结果,调用成功后响应体中会返回 token 信息。

2、创建组织

3、创建用户(创建用户前需切换到指定的组织下,新创建的用户会自动创建到当前所在的组织下)



是否对你有帮助?