本文檔詳細闡述阿里雲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。如來源是DingTalk,則為DingTalk的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。若是外部同步進來的,如來源於DingTalk,則是DingTalk的部門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
使用者顯示名稱