1. 通过连接流实现身份同步
专属集成平台
  • 快速开始
    • 集成平台概览
  • 身份与用户管理
    • 用户管理
      • 用户与组织架构管理
    • 角色管理
      • 角色管理配置说明
    • 属性管理
      • 属性管理配置说明
      • IDAAS 扩展物理字段使用说明
    • 上游身份数据集成
      • 通讯录身份集成概述
      • 集成连接器配置指南
        • 通讯录集成-泛微
        • 通讯录集成-飞书
        • 通讯录集成-企业微信
        • 通讯录集成-AD
        • 通讯录集成-睿人事
        • 通讯录集成-北森
        • 通讯录集成-SCIM
        • 通讯录集成-用友EHR
        • 通讯录集成-Azure AD
        • 通讯录集成-致远
        • 通讯录集成-LDAP
        • 通讯录集成-数据库
        • 通讯录集成-钉钉
          • 基础说明
          • 钉钉集成连接器如何配置属性映射
      • 通过连接流实现身份集成
        • 在连接流画布中完成身份集成配置
      • 身份集成常见问题
        • 常见问题 & 排错指南
    • 下游身份数据同步
      • 通讯录同步概述
      • 同步连接器配置指南
        • 通讯录同步-企业微信
        • 通讯录同步-AD
        • 通讯录同步-用友U8C
        • 通讯录同步-钉钉
          • 基础说明
          • 如何配置部门职位扩展字段
      • 通过连接流实现身份同步
        • 使用连接流实现身份下游同步
      • 身份同步常见问题
        • 常见问题 & 排错指南
        • 使用代理网关进行身份同步
  • 认证源管理
    • 认证源基础说明
      • 认证源选型说明
      • 认证源管理概述
    • 认证源配置指南
      • 基础协议配置
        • 认证源-CAS协议
        • 认证源-OIDC协议
        • 认证源-OAuth2协议
      • 三方认证源配置手册
        • 认证源-钉钉
        • 认证源-AD
        • 认证源-飞书
        • 认证源-LDAP
        • 认证源-微信
        • 认证源-微信公众号
        • 认证源-Google Workspace
        • 认证源-AD Azure
        • 认证源-美云智数
        • 认证源-企业微信
  • 应用管理
    • 基础说明
      • 应用管理概述
      • 应用创建与配置
    • 应用单点登录
      • 单点登录概述
      • 单点登录配置
      • 单点登出配置
      • 授权范围配置
      • 自定义集成单点登录配置说明
      • 应用密码代填
      • 应用网关
      • 单点登录配置指南
        • 单点登录-OIDC
        • 单点登录-SAML协议
        • 单点登录-OAuth2
        • 单点登录-CAS协议
        • 单点登录-钉钉SSO
        • 单点登录-分贝通
        • 单点登录-用友NCC
        • 单点登录-宜搭
        • 单点登录-泛微OA
        • 单点登录-致远OA
        • 单点登录-金蝶云星空
        • 单点登录-中国电子云邮箱
        • 单点登录-阿里云控制台(RAM)
        • 单点登录-纷享销客应用
        • 单点登录-纷享销客待办
        • 单点登录-Exchange
        • Exchange-双入口配置指南
    • 应用授权管理
      • 应用授权概述
      • 基于组织架构和用户授权
      • 基于角色授权(RBAC)
      • 基于用户属性授权(ABAC)
      • 用户自主申请应用(OA审批授权)权限
    • 应用分发
      • 企业应用分发
      • ABM应用分发
    • 使用应用调用集成平台 OPENAPI
      • M2M接口授权
      • 接口调用权限配置说明
  • 连接中心
    • 产品概述
      • 什么是 AI 连接流
      • AI 连接流的典型使用场景
    • 基础功能
      • 流程运行日志
      • 功能概览
      • 如何创建 AI 工作流
      • 授权凭证管理
      • 错误处理
    • 节点说明
      • 节点基础类型说明
      • 数据处理节点
        • 文本处理节点
        • 数组处理
        • 数据集合节点
      • 文件处理节点
        • 「Base64 转 URL」动作说明
        • 「PPT分页切割」动作说明
      • 应用节点
        • Teambition
        • 金蝶云 K3Cloud
      • 内置节点
        • 子流程调用
        • 缓存处理
        • 分支节点
        • 循环执行
        • MYSQL 触发动作说明
        • 数字签名
        • Webhook触发
        • 缓存列表处理
        • 条件分支
        • FTP
        • 延时节点
        • 模型子节点
        • MCP SERVER 工具
        • 邮件发送
        • 存储子节点
        • 工具子节点
        • HTTP 请求
        • 变量节点
        • 加解密节点
        • 返回变量
      • 运维管理节点
        • 数据校验节点
      • AI节点
        • 构建你的第一个 AI Agent
        • AI 浏览器操作节点
        • AI Agent节点使用指南
        • AI 消息对话节点 & 组件嵌入
  • 审计日志
    • 管理员行为日志
    • 用户变更日志
    • 接口调用日志
    • 用户行为日志
    • 消息发送日志
  • 权限中心
    • 管理员账号管理
    • 管理员角色管理
  • 品牌设置
    • 登录页设置
      • 登录页面配置
      • 登录页CSS自定义页面样式
      • CSS定制页面内容:样式修改指南及故障排除
    • 短信设置
      • 短信模板配置
      • 短信服务使用及签名修改使用指南
      • 短信服务-自定义连接流配置
      • 阿里云短信网关配置指引
    • 邮件设置
      • 邮件模板配置
      • 通过自定义连接流发送邮件
      • SMTP 配置与测试支持文档
    • 企业消息设置
      • 企业消息配置
      • 企业消息(钉钉_飞书)配置
    • 分发页面设置
      • 分发页面设置
  • 平台设置
    • 功能概述
    • 授权管理
    • 代理网关
    • 授权信息
    • 登录策略配置
      • 弱密码检测功能说明
      • 登录流程配置
      • 自动登录功能配置
    • MFA 配置
      • MFA基础配置
      • 使用连接流自定义 MFA 策略
    • 运维日志
      • 运维日志下载
  • 最佳实践
    • AD-LDAP接入指南
    • 第三方平台应用创建指南
      • 钉钉
        • 钉钉全套集成指南
        • 创建钉钉开放平台应用
      • 飞书
        • 飞书全套集成指南
        • 创建飞书开放平台应用
      • 企微
        • 企业微信全套集成指南
        • 创建企业微信开放平台应用
  • 开放接口
    • 鉴权认证
      • 获取access_token(请求体方式)
      • 获取access_token(Basic认证方式)
    • 用户管理
      • 查询用户
      • 创建用户
      • 根据多个条件过滤并查询用户信息
      • 根据用户帐号获取用户信息
      • 修改用户
      • 启用/禁用用户
      • 删除用户
      • 修改用户密码
    • 组织部门
      • 获取组/部门的列表
      • 创建组/部门
      • 根据组/部门ID获取组/部门的信息
      • 修改组/部门
      • 删除组/部门
      • 根据组/部门ID获取下级组/部门信息
      • 过滤部门信息
    • 角色管理
      • 创建角色
      • 获取单个角色详情
      • 修改角色
      • 删除角色
      • 查询角色列表
      • 根据应用ID和用户ID获取角色列表
      • 查看角色所对应的用户列表
      • 给多个用户添加静态角色
      • 删除用户静态角色
      • 获取用户的角色信息
    • 连接中心
      • Webhook启动连接流
    • 事件通知
      • 连接器事件通知
  1. 通过连接流实现身份同步

使用连接流实现身份下游同步

本文介绍如何在专属集成平台中使用连接流搭建「通讯录同步连接流」的完整逻辑,帮助实施人员完成从前置准备到上线验证的全流程配置。

概述#

IDaaS 平台支持将内部用户和部门数据同步到下游系统。同步逻辑通过连接流画布完成配置和编排,使用「专属集成平台身份同步」连接器的「通讯录同步」事件节点作为入口。
本文档适用于以下场景:
IDaaS 作为主数据源,将用户和部门同步到客户的业务系统、HR 系统、OA 系统或其他第三方应用
下游系统提供标准 HTTP/HTTPS 接口,支持用户和部门的创建、更新、删除操作

适用对象#

角色关注点
实施工程师连接流搭建、节点配置、测试验证
交付经理整体方案评估、配置检查清单
运维人员同步异常排查、link 表数据验证

关键术语#

概念说明
event_type事件类型,决定本次是创建、更新还是删除
external_user经过字段映射后的下游用户对象
external_dept经过字段映射后的下游部门对象
external_id下游对象 ID,来自 link 表
返回变量节点连接流中用于向 IDaaS 回传下游对象 ID 的专用节点

六类事件类型#

event_type含义推送数据
ADD_USER创建用户external_user、user
UPDATE_USER更新用户external_user、user、external_id
DELETE_USER删除用户external_id
ADD_DEPARTMENT创建部门external_dept、dept
UPDATE_DEPARTMENT更新部门external_dept、dept、external_id
DELETE_DEPARTMENT删除部门external_id

事件类型与变量可用性#

不同事件推送的字段并不完全一致
创建分支不能引用 external_id(下游尚无对象),删除分支只有 external_id(其他字段可能为空)。配置变量引用前请先对照此表。
场景external_user / external_deptexternal_iduser / dept
创建有(映射后的下游对象)无有
更新有(映射后的下游对象)有有
删除通常无有通常无

前置准备:收集下游接口信息#

在开始搭建连接流之前,必须先向客户或下游系统开发人员收集以下信息。

用户接口#

接口需要收集的信息示例
创建用户请求方式、URL、请求体格式、必填字段、返回结构POST /api/users
更新用户请求方式、URL、用户 ID 如何传递、请求体格式、返回结构PUT /api/users/{userId}
删除用户请求方式、URL、用户 ID 如何传递、返回结构DELETE /api/users/{userId}
查询用户(可选)请求方式、URL、支持的查询条件GET /api/users?mobile={mobile}

部门接口#

接口需要收集的信息示例
创建部门请求方式、URL、请求体格式、父部门 ID 如何传递、返回结构POST /api/departments
更新部门请求方式、URL、部门 ID 如何传递、请求体格式、返回结构PUT /api/departments/{deptId}
删除部门请求方式、URL、部门 ID 如何传递、返回结构DELETE /api/departments/{deptId}

鉴权信息#

鉴权方式需要收集的信息
API KeyKey 名称、Key 值、传递方式(Header / Query)
Basic Auth用户名、密码
OAuth2Token 获取地址、Client ID、Client Secret、Scope
自定义 TokenToken 获取接口、Token 传递方式

返回结构示例#

记录每个接口的成功和失败返回结构。
成功响应
失败响应(已存在)
{
  "code": 0,
  "message": "success",
  "data": {
    "userId": "U001",
    "username": "zhangsan"
  }
}

字段映射关系配置#

整理 IDaaS 字段与下游字段的对应关系,在画布顶部导航栏中的「映射管理」弹窗中进行配置
image.png

操作步骤#

搭建逻辑说明#

1
步骤 1:配置 Trigger 事件节点
1.
创建新的连接流
2.
选择 Trigger 类型为「专属集成平台身份同步」
3.
选择事件为「通讯录同步」
4.
关联到目标推送连接器
Trigger 节点会输出以下变量,供后续节点引用:
变量路径说明使用场景
event_type事件类型字符串条件分支判断
external_user映射后的下游用户对象用户创建/更新请求体
external_dept映射后的下游部门对象部门创建/更新请求体
external_id下游对象 ID更新/删除时定位下游对象
userIDaaS 本地用户对象需要引用原始用户数据时
deptIDaaS 本地部门对象需要引用原始部门数据时
提示:external_user 和 external_dept 的内部字段名由推送连接器中的字段映射配置决定,而不是固定的。
2
步骤 2:配置 Switch 节点
在 Trigger 节点之后添加一个Switch节点,配置六个条件。
分支序号分支名称条件表达式
1部门创建event_type == "ADD_DEPARTMENT"
2部门更新event_type == "UPDATE_DEPARTMENT"
3部门删除event_type == "DELETE_DEPARTMENT"
4用户创建event_type == "ADD_USER"
5用户更新event_type == "UPDATE_USER"
6用户删除event_type == "DELETE_USER"
注意:event_type 的值是字符串,条件比较时注意引号。建议按上表顺序排列分支,与同步执行顺序保持一致(部门先于用户)。
3
步骤 3:搭建部门创建分支
分支入口条件:event_type == "ADD_DEPARTMENT"
3.1 添加 HTTP 请求节点
配置项值说明
请求方式POST
请求地址下游创建部门接口 URL替换为实际地址
Content-Typeapplication/json
鉴权根据实际鉴权方式配置
请求体引用 Trigger 输出的 external_dept 变量。可以直接引用整个对象,或手动构造:
方式适用场景请求体示例
直接引用字段映射已完全匹配下游接口{{trigger.external_dept}}
手动构造下游接口字段名与映射后不一致见下方示例
手动构造请求体示例:{"deptName": "{{trigger.external_dept.name}}", "parentId": "{{trigger.external_dept.parentId}}", "deptCode": "{{trigger.external_dept.code}}"}
重要:具体变量路径取决于推送连接器中配置的部门字段映射。请先在推送连接器配置中确认映射后的字段名称,再在此处引用。
3.2 添加「返回变量」节点
在 HTTP 节点之后,添加一个「返回变量」节点,将下游返回的部门 ID 传回 IDaaS。
IDaaS 期望通过「返回变量」节点接收以下结构:
变量名类型必填配置值说明
idstring是从 HTTP 响应中提取下游部门 ID如 {{http_node.response.body.data.deptId}}
existedboolean否false默认 false,如下游返回已存在则设为 true
重要:id 的提取路径必须与下游接口实际响应结构一致。这是整个连接流中最关键的配置,如果 id 提取不到或提取错误,IDaaS 无法正确写入 link 表,后续更新和删除都会失败。
4
步骤 4:搭建部门更新分支
分支入口条件:event_type == "UPDATE_DEPARTMENT"
4.1 添加 HTTP 请求节点
配置项值说明
请求方式PUT 或 PATCH根据下游接口要求
请求地址下游更新部门接口 URLURL 中引用 {{trigger.external_id}}
Content-Typeapplication/json
请求体示例:{"deptName": "{{trigger.external_dept.name}}", "order": "{{trigger.external_dept.sortOrder}}"}
注意:更新接口通常不传 parentId,因为部门层级变更需要特殊处理。请根据下游接口文档确认。
4.2 添加「返回变量」节点
变量名配置值说明
id{{trigger.external_id}}更新场景直接使用 Trigger 传入的 external_id
existedtrue更新场景固定为 true
5
步骤 5:搭建部门删除分支
分支入口条件:event_type == "DELETE_DEPARTMENT"
5.1 添加 HTTP 请求节点
配置项值
请求方式DELETE
请求地址下游删除部门接口 URL,URL 中引用 {{trigger.external_id}}
部分下游系统的删除接口通过 Query 参数或 Body 传递 ID,根据实际接口调整。
5.2 添加「返回变量」节点
变量名配置值说明
id{{trigger.external_id}}
existedfalse
建议:如果下游返回「部门不存在」(如 404),通常应视为删除成功。可在 HTTP 节点与「返回变量」节点之间增加条件判断,将 404 也引导到正常的「返回变量」节点。
6
步骤 6:搭建用户创建分支
分支入口条件:event_type == "ADD_USER"
6.1 添加 HTTP 请求节点
配置项值
请求方式POST
请求地址下游创建用户接口 URL
Content-Typeapplication/json
请求体引用 external_user。可以直接引用整个对象 {{trigger.external_user}},或手动构造请求体。
手动构造请求体示例:{"account": "{{trigger.external_user.username}}", "name": "{{trigger.external_user.displayName}}", "phone": "{{trigger.external_user.mobile}}", "departmentId": "{{trigger.external_user.deptId}}"}
提示:departmentId 需要的是下游部门 ID,这个值已经在 IDaaS 内部通过 link 表完成转换。如果字段映射中配置了部门字段,external_user 中已包含转换后的下游部门 ID。
6.2 添加「返回变量」节点
变量名配置值说明
id从 HTTP 响应中提取下游用户 ID如 {{http_node.response.body.data.userId}}
existedfalse默认 false
重要:id 字段路径必须与下游实际响应结构一致。创建成功后如果 id 为空,IDaaS 无法写入 link 表。
7
步骤 7:搭建用户更新分支
分支入口条件:event_type == "UPDATE_USER"
7.1 添加 HTTP 请求节点
配置项值
请求方式PUT 或 PATCH
请求地址下游更新用户接口 URL,URL 中引用 {{trigger.external_id}}
Content-Typeapplication/json
请求体示例:{"name": "{{trigger.external_user.displayName}}", "phone": "{{trigger.external_user.mobile}}", "email": "{{trigger.external_user.email}}"}
注意:更新请求体通常不包含 account(用户名),因为大多数系统不允许修改账号名。请根据下游接口文档确认哪些字段允许更新。
7.2 添加「返回变量」节点
变量名配置值说明
id{{trigger.external_id}}直接使用 Trigger 传入的 external_id
existedtrue更新场景固定为 true
8
步骤 8:搭建用户删除分支
分支入口条件:event_type == "DELETE_USER"
8.1 添加 HTTP 请求节点
配置项值
请求方式DELETE
请求地址下游删除用户接口 URL,URL 中引用 {{trigger.external_id}}
8.2 添加「返回变量」节点
变量名配置值说明
id{{trigger.external_id}}
existedfalse
注意:删除事件中只有 external_id,没有用户的姓名、手机号等信息。如果下游删除接口需要这些额外信息,需要在删除前增加一个 HTTP 查询节点获取。建议将「用户不存在」(404)也视为删除成功。

返回变量节点配置详解#

💡
「返回变量」节点是连接流向 IDaaS 回传同步结果的唯一方式。每个分支的末尾都必须添加「返回变量」节点,否则 IDaaS 无法维护 link 表。

返回结构要求#

IDaaS 期望通过「返回变量」节点接收以下变量:
变量名类型必填说明
idstring创建/更新时必填下游系统分配或返回的对象 ID
existedboolean否true 表示下游对象已存在(创建时遇到去重),false 表示正常创建/删除

不同场景的配置方式#

创建场景
更新场景
删除场景
创建场景需要从 HTTP 响应中提取下游返回的对象 ID:
变量名配置值说明
id{{http_node.response.body.data.userId}}路径根据下游实际响应结构调整
existedfalse正常创建设为 false
如果下游返回「已存在」,需要在 HTTP 节点与「返回变量」节点之间增加条件分支:
条件id 配置值existed 配置值
下游返回成功(如 code == 0)响应中的对象 IDfalse
下游返回已存在(如 code == 40901)响应中的已有对象 IDtrue
其他错误不配置,进入失败分支—

常见下游响应的 id 提取路径#

下游响应结构id 配置值
{"code": 0, "data": {"userId": "U001"}}{{http_node.response.body.data.userId}}
{"success": true, "id": "U001"}{{http_node.response.body.id}}
{"code": 0, "result": [{"id": "U001"}]}{{http_node.response.body.result[0].id}}
{"code": 0, "data": {"id": "D001"}}{{http_node.response.body.data.id}}

返回变量配置常见错误#

以下错误会导致同步链路断裂
返回变量配置错误是同步失败最常见的原因。请逐项检查。
错误后果排查方法
id 字段路径写错link 表写入空值,后续更新/删除全部失败检查 HTTP 节点的实际响应结构
忘记添加「返回变量」节点IDaaS 收不到下游 ID,link 表无法写入检查每个分支末尾是否有「返回变量」节点
existed 始终为 false下游已存在的对象在 link 表中被重复记录检查是否需要处理已存在场景
引用了错误的节点变量提取到空值或错误值确认变量路径指向正确的 HTTP 响应节点
删除分支没有添加「返回变量」节点IDaaS 无法确认删除成功,link 表未清除每个分支都必须有「返回变量」节点

验证与测试#

测试顺序#

必须按以下顺序测试,因为用户依赖部门:
1
第一步:测试部门创建
触发部门创建事件,验证:
检查项预期结果验证方式
下游部门创建成功在下游系统中可看到新部门登录下游系统查看
link 表写入正确iam_link_org 中有对应记录数据库查询或产品界面
下游部门 ID 正确iam_link_org.external_id 与下游一致对比下游部门 ID
父部门层级正确子部门 parentId 指向正确的下游父部门在下游系统验证层级
2
第二步:测试部门更新
修改 IDaaS 部门名称,触发更新事件。确认下游部门名称已更新,link 表 profile 和 sync_batch_no 已刷新。
3
第三步:测试用户创建
触发用户创建事件,验证:
检查项预期结果验证方式
下游用户创建成功在下游系统中可看到新用户登录下游系统查看
link 表写入正确iam_link_user 中有对应记录数据库查询或产品界面
下游用户 ID 正确iam_link_user.external_id 与下游一致对比下游用户 ID
所属部门正确下游用户的部门 ID 指向正确的下游部门在下游系统验证
4
第四步:测试用户更新
修改用户属性,触发更新事件。确认下游属性已更新,未修改的字段未被清空。
5
第五步:测试用户删除
删除 IDaaS 用户,确认下游用户已删除,iam_link_user 中对应记录已清除。
6
第六步:测试部门删除
删除 IDaaS 部门(先确保部门下无用户),确认下游部门已删除,iam_link_org 中对应记录已清除。
7
第七步:全量同步测试
1.
在 IDaaS 中准备包含多级部门和多个用户的组织架构
2.
触发全量同步,验证所有部门和用户在下游正确创建
3.
修改部分用户和部门属性,再次同步,验证更新
4.
删除部分用户,再次同步,验证删除
5.
检查 link 表数据与下游系统一致

常见问题#

Q:用户创建成功但后续更新失败
Q:部门创建时父部门 ID 为空
Q:删除事件没有触发
Q:同步时变量为空
Q:同步成功但 link 表未写入
Q:下游接口返回 401/403

调试技巧#

实用调试方法
1.
先用 Postman 测下游接口:在配置连接流之前,手动调用一次下游接口确认接口地址、鉴权、请求体和响应结构
2.
逐步测试:配置一个分支就测试一个,不要一次配置完所有分支
3.
查看 Trigger 实际输出:用测试数据触发一次同步事件,在执行日志中查看 Trigger 实际输出,以此为准配置变量引用
4.
脚本节点打印变量:在 HTTP 节点前插入脚本节点打印变量值,确认变量是否有值

高级配置#

创建前查重
创建和更新使用不同字段
部门层级保序
失败重试配置

上线检查清单#

基础配置#

推送连接器已启用
同步范围配置正确
字段映射配置完整
下游根组织 ID 已填写

连接流配置#

Trigger 节点关联到正确的推送连接器
条件分支节点配置了六个分支,条件表达式正确
六个 HTTP 节点的请求地址、方法、鉴权均已配置
创建分支的请求体引用了 external_user / external_dept
更新和删除分支的 URL 中引用了 external_id
更新分支的请求体排除了不可更新的字段

返回变量节点配置#

每个分支末尾都添加了「返回变量」节点
创建分支的返回变量 id 从 HTTP 响应中正确提取
更新分支的返回变量 id 引用了 {{trigger.external_id}}
删除分支的返回变量 id 引用了 {{trigger.external_id}}
id 的提取路径与下游实际响应结构一致
已处理「已存在」和「不存在」的特殊场景

测试验证#

部门创建测试通过
部门更新测试通过
部门删除测试通过
用户创建测试通过
用户更新测试通过
用户删除测试通过
link 表数据与下游系统一致
全量同步测试通过

修改于 2026-05-07 11:21:56
上一页
如何配置部门职位扩展字段
下一页
常见问题 & 排错指南
Built with