本文档详细阐述阿里云IDaaS(EIAM)的事件回调机制,为开发者提供应用同步功能对接的完整指导方案。通过理解事件参数分类及处理流程,开发者可实现高效的系统集成。
基础说明
以下是关于事件参数及分类的具体说明。若需了解更深入的对接原理和调用流程,请参阅账户同步接入概述。
测试事件
当管理员完成应用同步配置后,可通过点击测试连接按钮来验证配置的有效性。此过程会触发特殊的测试事件,以便应用能够接收到并进行相应的处理,确保配置无误。
增量事件
增量事件是由IDaaS内部通讯录发生变更时自动触发的操作类型。这类事件主要用于在IDaaS与第三方应用之间实现数据的持续更新与同步。通过监听此类事件,可以有效地保持两端数据的一致性,特别适用于实时或近实时的数据同步需求。
全量事件
全量事件是指由管理员手动从IDaaS界面触发的一种同步操作,目的是将IDaaS中的所有数据一次性导入到目标应用中。这种类型的同步通常用于初次集成或是需要对数据进行全面更新的场景。
事件清单
事件模块 | 事件类型 | 类型代码 |
测试事件 | urn:alibaba:idaas:app:event:common:test | |
通讯录 增量事件 | urn:alibaba:idaas:app:event:ud:user:create | |
urn:alibaba:idaas:app:event:ud:user:delete | ||
urn:alibaba:idaas:app:event:ud:user:update_info | ||
urn:alibaba:idaas:app:event:ud:user:update_password | ||
urn:alibaba:idaas:app:event:ud:user:disable | ||
urn:alibaba:idaas:app:event:ud:user:enable | ||
urn:alibaba:idaas:app:event:ud:user:lock | ||
urn:alibaba:idaas:app:event:ud:user:unlock | ||
urn:alibaba:idaas:app:event:ud:user:update_primary_ou | ||
urn:alibaba:idaas:app:event:ud:organizational_unit:create | ||
urn:alibaba:idaas:app:event:ud:organizational_unit:delete | ||
urn:alibaba:idaas:app:event:ud:organizational_unit:update | ||
urn:alibaba:idaas:app:event:ud:organizational_unit:update_parent_organizational_unit | ||
urn:alibaba:idaas:app:event:ud:group:create | ||
urn:alibaba:idaas:app:event:ud:group:update | ||
urn:alibaba:idaas:app:event:ud:group:delete | ||
urn:alibaba:idaas:app:event:ud:group:add_user | ||
urn:alibaba:idaas:app:event:ud:group:remove_user | ||
通讯录 全量事件 | urn:alibaba:idaas:app:event:ud:organizational_unit:push | |
urn:alibaba:idaas:app:event:ud:user:push | ||
urn:alibaba:idaas:app:event:ud:group:push |
所有的账户/组织事件,IDaaS均会将完整的账户/组织信息作为参数,传递给事件监听方。若数据中有敏感信息,推荐通过HTTPS加密通道或勾选业务数据加密,对传输过程进行保护。
测试事件
测试连接
测试配置信息的连通性,验证验签和加密能力。
测试事件使用独立的事件订阅类型:urn:alibaba:idaas:app:event:common:test。
该事件仅支持在控制台中通过一键测试使用,不支持接口调用。
请求参数验签后payload
示例:
{
"iss": "urn:alibaba:idaas:app:event",
"sub": "idaas_rhhoqmlnyu3cv7ow657gyvurky",
"aud": "app_mjavzivahje6zxkbc4i2bierdu",
"exp": 1648711369,
"iat": 1648709570,
"jti": "bNRrCYrqXjqe8B1xweqlZw",
"dataEncrypted": false,
"cipherData": "",
"plainData": {
"instanceId": "idaas_rhhoqmlnyu3cv7ow657gyvurky",
"aliUid": 151971404963****,
"eventVersion": "V1.0",
"eventData": [
{
"eventId":"evnt_aaaac766x2somw2ptotoyk6ag6bmfkt5xpqprpq",
"eventType":"urn:alibaba:idaas:app:event:common:test",
"eventTime":"1648709509849",
"bizId":"evnt_aaaac766x2somw2ptotoyk6ag6bmfkt5xpqprpq",
"bizData":"{\"bizData\":\"req_xxxxxxxxxxsdfsdfsfd\"}"
}
]
}
}
应用成功接收后,应用侧必须在返回请求,并确保字段 successEvents
中 eventId
与请求中保持一致。
否则测试请求将失败。
{
"successEvents": [
{
"eventId": "evnt_aaaac766x2somw2ptotoyk6ag6bmfkt5xpqprpq",
"eventCode": "SUCCESS",
"eventMessage": "SUCCESS"
}
],
"skippedEvents": [
{
"eventId": "",
"eventCode": "",
"eventMessage": ""
}
],
"failedEvents": [
{
"eventId": "",
"eventCode": "",
"eventMessage": ""
}
],
"retriedEvents": [
{
"eventId": "",
"eventCode": "",
"eventMessage": ""
}
]
}
通讯录增量事件
用户事件
账户创建
通过该事件订阅员工入职。
事件类型:urn:alibaba:idaas:app:event:ud:user:create。
解析后的
bizData
示例:{ "password": "ssGp96", "userId": "user_4alcbywzc7jyl23lu2srljsw7i", "username": "zhangsan", "displayName": "张三", "passwordSet": true, "phoneRegion": "", "phoneNumber": "155****5620", "phoneVerified": false, "email":"zh***@163.com", "emailVerified": false, "userExternalId": "user_4alcbywzc7jyl23lu2srljsw7i", "userSourceType": "build_in", "userSourceId": "idaas_rhhoqmlnyu3cv7ow657gyvurky", "status": "enabled", "accountExpireTime": "-1", "registerTime": "1648531553621", "lockExpireTime": "-1", "createTime": "1648531553621", "updateTime": "1648531553621", "description": "", "customFields": [ { "fieldName": "test_custom_field", "fieldValue": "test_value" } ], "primaryOrganizationalUnitId": "ou_bvluxnp2ef36uupdwob6km34a4", "organizationalUnits": [ { "organizationalUnitId": "ou_bvluxnp2ef36uupdwob6km34a4", "organizationalUnitName": "研发部", "primary": true } ] }
参数说明:
参数
字段类型
说明
userId
String
用户唯一id
username
String
用户名
displayName
String
显示名称,一般为用户姓名。
passwordSet
boolean
是否设置密码
phoneRegion
String
手机号区号
phoneNumber
String
手机号
phoneVerified
boolean
手机号是否验证过,暂时不进行验证。
email
String
邮箱
emailVerified
boolean
邮箱是否验证过,暂时不进行验证。
userExternalId
String
外部id。若是自建账户则和 userId 一致;若是外部同步的账户,则为来源的用户id。如来源是钉钉,则为钉钉的userId。
userSourceType
String
来源类型,若为自建账户,则为 "build_id"。
userSourceId
String
来源类型 id
password
String
密码。若同步应用开启同步密码,且用户设置密码,会传该值。
status
String
状态:enabled-启用,disabled-禁用。
accountExpireTime
Long
用户过期时间
registerTime
Long
注册时间
lockExpireTime
Long
锁定到期时间,即到该时间点则解锁。
createTime
Long
创建时间
updateTime
Long
修改时间
description
String
描述
customFields
List
扩展字段列表
-fieldName
String
字段名称标识
-fieldValue
String
字段值
primaryOrganizationalUnitId
String
所属主组织机构
organizationalUnits
List
所属组织机构列表
-organizationalUnitId
String
所属组织机构唯一id
-organizationalUnitName
String
所属组织机构名称。
-primary
boolean
所属主组织机构。true-所属主组织机构,false-非主组织机构。
账户删除
当员工离职时,通讯录发生变更,可订阅该事件。
事件类型:urn:alibaba:idaas:app:event:ud:user:delete。
解析后的
bizData
示例:同账户创建。账户基础信息更新
若员工基本信息发生变更。如手机号,邮箱,姓名等发生变更,应用需要及时收到变更的信息,可通过订阅该事件。
事件类型:urn:alibaba:idaas:app:event:ud:user:update_info。
解析后的
bizData
示例:同账户创建。账户密码更新
当账户密码发生变更时,如:管理员重置密码,用户修改密码。应用可通过订阅此事件,收到账户最新密码。
重要注意:在订阅该事件时,同时还需要配置同步范围,才会生效。否则不同步。请参考 账户同步 - IDaaS 同步到应用。
事件类型:urn:alibaba:idaas:app:event:ud:user:update_password。
解析后的
bizData
示例:同账户创建。账户启用
账户状态发生变更,从禁用状态修改为启用状态,可订阅该事件。
事件类型:urn:alibaba:idaas:app:event:ud:user:enable。
解析后的
bizData
示例:同账户创建。账户禁用
账户状态发生变更,从启用状态修改为禁用状态,可订阅该事件。
事件类型:urn:alibaba:idaas:app:event:ud:user:disable。
解析后的
bizData
示例:同账户创建。账户锁定
账户状态发生变更,如输错多次密码,导致账号锁定,暂不可用,可订阅该事件。
事件类型:urn:alibaba:idaas:app:event:ud:user:lock。
解析后的
bizData
示例:同账户创建。账户解锁
账户状态发生变更,由锁定状态变为正常状态,可订阅该事件。
事件类型:urn:alibaba:idaas:app:event:ud:user:unlock。
解析后的
bizData
示例:同账户创建。账户移动
账户所属主组织机构变更,可订阅该事件。
事件类型:urn:alibaba:idaas:app:event:ud:user:update_primary_ou。
解析后的
bizData
示例:同账户创建。
组织单元(OU)事件
组织创建
可通过该事件订阅创建组织机构。
事件类型:urn:alibaba:idaas:app:event:ud:organizational_unit:create。
解析后的
bizData
示例:{ "organizationalUnitId": "ou_dqdvxesykpfhig2kvgrzpeoeyu", "organizationalUnitName": "组织部", "parentId": "ou_dqdvxesykpdfasdfaseoeyu", "organizationalUnitExternalId": "ou_dqdvxesykpfhig2kvgrzpeoeyu", "organizationalUnitSourceType": "build_in", "organizationalUnitSourceId": "idaas_rhhoqmlnyu3cv7ow657gyvurky", "createTime": "1648451475209", "updateTime": "1648451475209", "description":"自建" }
参数说明:
参数
字段类型
说明
organizationalUnitId
String
组织唯一id
organizationalUnitName
String
组织名称。
parentId
String
父级组织机构id
organizationalUnitExternalId
String
外部id,若组织是自建的则是
organizationalUnitId。若是外部同步进来的,如来源于钉钉,则是钉钉的部门id。
organizationalUnitSourceType
String
来源类型
organizationalUnitSourceId
String
来源类型id
createTime
Long
创建时间
updateTime
Long
修改时间,同lastUpdatedTime
description
String
描述
组织删除
可通过该事件订阅删除组织机构。
事件类型:urn:alibaba:idaas:app:event:ud:organizational_unit:delete。
解析后的
bizData
示例:同组织创建。组织更新
可通过该事件订阅修改组织机构基础信息,如组织机构名称。
事件类型:urn:alibaba:idaas:app:event:ud:organizational_unit:update。
解析后的
bizData
示例:同组织创建。组织移动
可通过该事件订阅组织机构更新父组织机构。
事件类型:urn:alibaba:idaas:app:event:ud:organizational_unit:update_parent_organizational_unit。
解析后的
bizData
示例:同组织创建。
组(Group)事件
组创建
可通过该事件订阅组创建。
事件类型:urn:alibaba:idaas:app:event:ud:group:create。
解析后的
bizData
示例:{ "groupId": "group_yvx3ugdi3yzaehnsd3uqzb4xha", "groupName": "test_2024", "groupExternalId": "test_2024" }
参数说明:
参数
字段类型
说明
groupId
String
组唯一标识
groupName
String
组显示名称
groupExternalId
String
组外部Id
allMembers
List
组当前全部成员
memberId
String
用户唯一标识
memberName
String
用户显示名称
组基础信息更新
可通过该事件订阅组基础信息更新。
事件类型:urn:alibaba:idaas:app:event:ud:group:update。
解析后的
bizData
示例:同组创建。组删除
可通过该事件订阅组删除。
事件类型:urn:alibaba:idaas:app:event:ud:group:delete。
解析后的
bizData
示例:同组创建。组添加成员
可通过该事件订阅组添加成员。
事件类型:urn:alibaba:idaas:app:event:ud:group:add_user。
解析后的
bizData
示例:{ "addedMembers": [ { "memberId": "user_zakg7oeeaftqqff2bzcv7wpqs4", "memberName": "小明" } ], "groupId": "group_yvx3ugdi3yzaehnsd3uqzb4xha", "groupName": "test_2024_test", "groupExternalId": "test_2024" }
参数说明:
参数
字段类型
说明
groupId
String
组唯一标识
groupName
String
组显示名称
groupExternalId
String
组外部Id
addedMembers
List
需要添加的成员
-memberId
String
用户唯一标识
-memberName
String
用户显示名称
组移除成员
可通过该事件订阅组移除成员。
事件类型:urn:alibaba:idaas:app:event:ud:group:remove_user。
解析后的
bizData
示例:{ "removedMembers": [ { "memberId": "user_zakg7oeeaftqqff2bzcv7wpqs4", "memberName": "小明" } ], "groupId": "group_yvx3ugdi3yzaehnsd3uqzb4xha", "groupName": "test_2024_test", "groupExternalId": "test_2024" }
参数说明:
参数
字段类型
说明
groupId
String
组唯一标识
groupName
String
组显示名称
groupExternalId
String
组外部Id
removedMembers
List
需要移除的成员
-memberId
String
用户唯一标识
-memberName
String
用户显示名称
通讯录全量事件
全量推送事件
全量推送组织机构
事件类型:urn:alibaba:idaas:app:event:ud:organizational_unit:push。
解析后的
bizData
示例:同组织创建。全量推送账户
事件类型:urn:alibaba:idaas:app:event:ud:user:push。
解析后的
bizData
示例:同账户创建。全量推送组
可通过该事件订阅全量推送组。
事件类型:urn:alibaba:idaas:app:event:ud:group:push。
解析后的
bizData
示例:{ "allMembers": [ { "memberId": "user_zakg7oeeaftqqff2bzcv7wpqs4", "memberName": "小明" }, { "memberId": "user_zakg7oeea1234ff2bzcexample", "memberName": "张三" } ], "groupId": "group_yvx3ugdi3yzaehnsd3uqzb4xha", "groupName": "test_2024", "groupExternalId": "test_2024" }
参数说明:
参数
字段类型
说明
groupId
String
组唯一标识
groupName
String
组显示名称
groupExternalId
String
组外部Id
allMembers
List
组当前全部成员
-memberId
String
用户唯一标识
-memberName
String
用户显示名称