文档首页 / 用户同步

用户同步

从数据库、HTTP 接口或 LDAP 同步用户、部门、角色、岗位到平台,含三步配置、字段映射、定时同步、熔断与管理端接口,并说明第三方嵌入时的自动建号。

概述

用户同步把企业已有系统里的组织架构和人员批量导入 Sight Report,避免手工维护两套账号。支持同步四类对象:用户、部门、角色、岗位,数据来源可以是关系数据库、HTTP 接口或 LDAP/AD 服务器。

用户接入的方式有两种:

方式 适用场景
批量同步(本文) 平台需要提前拥有用户与部门,用于登录、授权、按部门分配数据权限
嵌入时自动建号 第三方系统用签名嵌入报表,首次访问时按外部账号自动创建平台账号,见三方集成应用

同步只支持数据库、HTTP、LDAP 三种数据源,界面上没有 Excel 数据源。Excel 只用于「所有用户」页面的手工导入。

用户同步数据流:数据库、HTTP 或 LDAP 数据源经三步配置同步到用户、部门、角色、岗位

功能入口

系统 > 用户管理 > 「用户同步」 标签页。页面顶部为「同步配置」,下面是四张卡片:「用户同步」「部门同步」「角色同步」「岗位同步」。每类对象最多一份配置。

卡片上的操作:

操作 说明
「创建配置」 未配置时出现,打开配置对话框
「立即同步」 确认后立刻执行一次,提示「同步任务已启动」
更多菜单「预览数据」 查看数据源返回的原始数据
更多菜单「编辑配置」 修改配置
更多菜单「导出配置」 导出该配置。页面顶部「导出全部」导出所有配置,「导入配置」从文件导入
更多菜单「开启定时同步」/「暂停定时同步」 切换配置的启用状态,卡片显示「已启用」或「已停用」
更多菜单「清空已同步数据」 删除所有由同步产生的数据
更多菜单「删除配置」 删除配置本身

注意:「清空已同步数据」按数据来源(同步产生的记录)判断,会删除全部同步数据,操作前确认。

操作步骤

以从企业数据库同步用户为例。

新建同步配置

  1. 打开「用户同步」标签页,在「用户同步」卡片点击「创建配置」,对话框标题为「新增同步配置」,共三步:「基础设置」「数据配置」「字段映射与选项」。

  2. 在「基础设置」填写「配置名称」(最多 50 字),「同步类型」在从卡片进入时已固定,「数据源类型」选「数据库」,「同步策略」选「全量同步」,点击「下一步」。

  3. 在「数据配置」选择「数据源」(来自 数据源 管理里已有的连接),填写「SQL语句」,例如:

    SELECT user_id, user_name, email, phone FROM sys_user WHERE status = 1
    

    点击「数据预览」确认返回了预期的行,点击「下一步」。此时系统加载源字段,加载失败会提示「未能获取到源字段,请先点击"预览数据"加载字段」。

  4. 在「字段映射与选项」把源字段映射到目标字段,至少映射目标字段中标为必填的「账号」和「姓名」。

  5. 按需设置数据处理、定时同步等选项,点击「保存配置」,提示「保存成功」。

  6. 回到卡片,点击「立即同步」,在弹窗中确认。

  7. 同步结束后在「所有用户」页面确认用户已出现。

属性/参数说明

基础设置

属性 说明 取值/默认值
配置名称 配置的名称 必填,最多 50 字
同步类型 同步的对象 用户、部门、角色、岗位。创建后不能修改
数据源类型 数据来源 数据库、HTTP接口、LDAP
同步策略 每次同步的范围 全量同步:每次同步全部数据,适合数据量小;增量同步:只同步新增和修改的数据,需要数据源支持;智能同步:自动检测变化,决定同步方式
描述 备注 可选

数据库数据源

属性 说明 取值/默认值
数据源 选择已配置的数据源 必填
SQL语句 查询人员或部门的 SQL 必填
批量大小 每批次处理的数据量 可选
查询超时(秒) SQL 查询超时时间 可选
数据预览 执行查询并查看结果 -

HTTP 数据源

属性 说明 取值/默认值
请求地址 接口地址,方法可选 GET 或 POST 必填
认证方式 接口的认证 无认证、Basic Auth(用户名、密码)、Bearer Token、API Key认证(Header名称、API Key)、签名验证(签名密钥、签名算法 HMAC-SHA256 / HMAC-SHA1 / HMAC-MD5)
请求头 自定义请求头 可选
请求体 JSON 格式的请求体 可选
数据路径 响应 JSON 中数据数组的路径 如 data.list
启用分页 接口分页时设置页码参数名等 可选
字段路径 从响应里取值的字段:用户ID字段、用户名字段、真实姓名字段、邮箱字段、手机号字段、部门ID字段、角色字段、岗位字段、密码字段 密码字段留空则不同步密码

LDAP 数据源

属性 说明 取值/默认值
服务器地址 ldap:// 或 ldaps:// 地址 必填
Base DN 搜索根节点 必填
绑定DN / 绑定密码 绑定账号,绑定DN 留空为匿名访问 可选
用户过滤器 用户搜索过滤器 如 (&(objectClass=person)(uid=*))
部门过滤器 部门/组织单元搜索过滤器 如 (objectClass=organizationalUnit)
搜索范围 搜索深度 子树搜索 (SUBTREE)、单层搜索 (ONELEVEL)、基础搜索 (BASE)
用户属性 用户ObjectClass、用户ID属性、用户名属性、邮箱属性、手机属性、用户DN属性 AD 常用 user、sAMAccountName;OpenLDAP 常用 inetOrgPerson、uid
成员关系属性 用户所属组的属性,用于同步用户角色 如 memberOf
部门属性 部门ObjectClass、部门ID属性、部门名称属性、父部门属性 父部门属性留空则按 DN 层级解析
启用角色同步 把 LDAP 组同步为角色,并设置角色ObjectClass、角色ID属性、角色名称属性、组成员属性 默认关闭

目标字段

字段映射的右侧是平台的目标字段,由同步类型决定:

同步类型 目标字段(必填项用「必填」标注)
用户 账号(必填)、姓名(必填)、邮箱、手机号、性别、状态、工号、密码
部门 部门名称(必填)、部门编码、上级部门ID、状态、排序
角色 角色名称(必填)、描述、状态、排序
岗位 岗位名称(必填)、描述、状态、排序

同步选项

属性 说明 取值/默认值
创建新数据 创建目标中不存在的数据 开关
更新已有数据 更新目标中已存在的数据 开关
处理多余数据 目标中存在、数据源中不存在的数据 不处理、停用、删除
冲突处理 数据冲突时的处理 跳过、覆盖、合并
启用定时同步 按 Cron 计划自动执行 开启后在「执行计划」中设置
用户可编辑 同步后是否允许手动改姓名、手机、邮箱 开关
重复验证字段 判断数据是否重复的依据 ID、名称
密码加密方式 同步密码字段时的存储方式 内置 SHA256 加密、MD5 加密、明文(不加密)、自定义加密
启用熔断 用户数量大幅减少时停止同步,防止误删 阈值 1 到 100,为数量减少的百分比
启用提醒 同步失败时提醒 提醒方式可勾选:平台消息、邮件、短信

管理端接口

用户同步接口只允许管理员的登录会话调用,请求头带 satoken。这些接口用于平台自己的管理页面,不属于面向第三方系统的开放接口,不接受签名认证。

接口 方法 说明
/api/user-sync/config/list GET 分页查询配置
/api/user-sync/config/{id} GET 配置详情
/api/user-sync/config/create POST 创建配置
/api/user-sync/config/{id}/update POST 更新配置
/api/user-sync/config/{id}/delete POST 删除配置
/api/user-sync/config/{id}/enable、/disable POST 启用、停用
/api/user-sync/config/{id}/test-connection POST 测试数据源连接
/api/user-sync/config/{id}/preview GET 预览同步结果
/api/user-sync/config/{id}/preview-data GET 预览数据源原始数据,参数 limit 默认 100
/api/user-sync/config/{id}/execute POST 执行同步,返回 {"logId":"..."}
/api/user-sync/config/{id}/cancel POST 取消正在执行的同步
/api/user-sync/config/{id}/progress、/is-running GET 运行进度、是否运行中
/api/user-sync/running GET 所有正在运行的同步任务
/api/user-sync/getTargetFields GET 目标字段,参数 syncType
/api/user-sync/clear-sync-data POST 清除所有同步数据
/api/user-sync/log/list GET 同步日志分页
/api/user-sync/log/cleanup POST 清理历史日志,参数 days 默认 30
BASE=https://your-domain
TOKEN=<管理员登录后的 satoken>

# 执行某个同步配置
curl -s -X POST "$BASE/api/user-sync/config/<配置ID>/execute" -H "satoken: $TOKEN"

# 查看是否仍在运行
curl -s "$BASE/api/user-sync/config/<配置ID>/is-running" -H "satoken: $TOKEN"

示例

从 OpenLDAP 同步部门和人员:

  1. 依次为「部门同步」「用户同步」创建配置,「数据源类型」都选「LDAP」。
  2. 「服务器地址」填 ldap://ldap.example.com:389,「Base DN」填 dc=example,dc=com,填写「绑定DN」和「绑定密码」。
  3. 部门配置里「部门过滤器」用 (objectClass=organizationalUnit);用户配置里「用户过滤器」用 (&(objectClass=inetOrgPerson)(uid=*)),「用户ID属性」填 uid。
  4. 分别在「数据配置」步骤点击预览数据,确认返回记录,映射字段后保存。
  5. 依次「立即同步」部门与用户。
  6. 在「身份验证」中把「同步用户的认证方式」设为「LDAP 认证」,用户即可用域密码登录,见登录集成。

预期:部门树与用户出现在 系统 > 用户管理 中,用户归属到对应部门。

注意事项

注意:初次同步前先点击「预览数据」确认数据源返回的记录、字段名正确,避免带入脏数据。

注意:把「处理多余数据」设为「删除」时,数据源里暂时查不到的记录会被删除,建议同时启用「熔断」作为保护。

提示:同步用户的登录认证由「身份验证」页面的「同步用户的认证方式」决定,与用户同步的数据源相互独立。

相关文档

联系我们

请填写您的信息,我们将在 1 个工作日内与您联系。