通讯录事件

本文档详细阐述阿里云IDaaS(EIAM)的事件回调机制,为开发者提供应用同步功能对接的完整指导方案。通过理解事件参数分类及处理流程,开发者可实现高效的系统集成。

基础说明

以下是关于事件参数及分类的具体说明。若需了解更深入的对接原理和调用流程,请参阅账户同步接入概述

  1. 测试事件

    当管理员完成应用同步配置后,可通过点击测试连接按钮来验证配置的有效性。此过程会触发特殊的测试事件,以便应用能够接收到并进行相应的处理,确保配置无误。

  2. 增量事件

    增量事件是由IDaaS内部通讯录发生变更时自动触发的操作类型。这类事件主要用于在IDaaS与第三方应用之间实现数据的持续更新与同步。通过监听此类事件,可以有效地保持两端数据的一致性,特别适用于实时或近实时的数据同步需求。

  3. 全量事件

    全量事件是指由管理员手动从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\"}"
         }
     ]
  }
}

应用成功接收后,应用侧必须在返回请求,并确保字段 successEventseventId 与请求中保持一致。

否则测试请求将失败。

{
  "successEvents": [
    {
      "eventId": "evnt_aaaac766x2somw2ptotoyk6ag6bmfkt5xpqprpq",
      "eventCode": "SUCCESS",
      "eventMessage": "SUCCESS"
    }
  ],
  "skippedEvents": [
    {
      "eventId": "",
      "eventCode": "",
      "eventMessage": ""
    }
  ],
  "failedEvents": [
    {
      "eventId": "",
      "eventCode": "",
      "eventMessage": ""
    }
  ],
  "retriedEvents": [
    {
      "eventId": "",
      "eventCode": "",
      "eventMessage": ""
    }
  ]
}

通讯录增量事件

用户事件

  1. 账户创建

    通过该事件订阅员工入职。

    事件类型: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-非主组织机构。

  2. 账户删除

    当员工离职时,通讯录发生变更,可订阅该事件。

    事件类型:urn:alibaba:idaas:app:event:ud:user:delete。

    解析后的bizData示例:同账户创建。

  3. 账户基础信息更新

    若员工基本信息发生变更。如手机号,邮箱,姓名等发生变更,应用需要及时收到变更的信息,可通过订阅该事件。

    事件类型:urn:alibaba:idaas:app:event:ud:user:update_info。

    解析后的bizData示例:同账户创建。

  4. 账户密码更新

    当账户密码发生变更时,如:管理员重置密码,用户修改密码。应用可通过订阅此事件,收到账户最新密码。

    重要

    注意:在订阅该事件时,同时还需要配置同步范围,才会生效。否则不同步。请参考 账户同步 - IDaaS 同步到应用

    事件类型:urn:alibaba:idaas:app:event:ud:user:update_password。

    解析后的bizData示例:同账户创建。

  5. 账户启用

    账户状态发生变更,从禁用状态修改为启用状态,可订阅该事件。

    事件类型:urn:alibaba:idaas:app:event:ud:user:enable。

    解析后的bizData示例:同账户创建。

  6. 账户禁用

    账户状态发生变更,从启用状态修改为禁用状态,可订阅该事件。

    事件类型:urn:alibaba:idaas:app:event:ud:user:disable。

    解析后的bizData示例:同账户创建。

  7. 账户锁定

    账户状态发生变更,如输错多次密码,导致账号锁定,暂不可用,可订阅该事件。

    事件类型:urn:alibaba:idaas:app:event:ud:user:lock。

    解析后的bizData示例:同账户创建。

  8. 账户解锁

    账户状态发生变更,由锁定状态变为正常状态,可订阅该事件。

    事件类型:urn:alibaba:idaas:app:event:ud:user:unlock。

    解析后的bizData示例:同账户创建。

  9. 账户移动

    账户所属主组织机构变更,可订阅该事件。

    事件类型:urn:alibaba:idaas:app:event:ud:user:update_primary_ou。

    解析后的bizData示例:同账户创建。

组织单元(OU)事件

  1. 组织创建

    可通过该事件订阅创建组织机构。

    事件类型: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

    描述

  2. 组织删除

    可通过该事件订阅删除组织机构。

    事件类型:urn:alibaba:idaas:app:event:ud:organizational_unit:delete。

    解析后的bizData示例:同组织创建。

  3. 组织更新

    可通过该事件订阅修改组织机构基础信息,如组织机构名称。

    事件类型:urn:alibaba:idaas:app:event:ud:organizational_unit:update。

    解析后的bizData示例:同组织创建。

  4. 组织移动

    可通过该事件订阅组织机构更新父组织机构。

    事件类型:urn:alibaba:idaas:app:event:ud:organizational_unit:update_parent_organizational_unit。

    解析后的bizData示例:同组织创建。

组(Group)事件

  1. 组创建

    可通过该事件订阅组创建。

    事件类型: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

    用户显示名称

  2. 组基础信息更新

    可通过该事件订阅组基础信息更新。

    事件类型:urn:alibaba:idaas:app:event:ud:group:update。

    解析后的 bizData 示例:同组创建。

  3. 组删除

    可通过该事件订阅组删除。

    事件类型:urn:alibaba:idaas:app:event:ud:group:delete。

    解析后的 bizData 示例:同组创建。

  4. 组添加成员

    可通过该事件订阅组添加成员。

    事件类型: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

    用户显示名称

  5. 组移除成员

    可通过该事件订阅组移除成员。

    事件类型: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

    用户显示名称

通讯录全量事件

全量推送事件

  1. 全量推送组织机构

    事件类型:urn:alibaba:idaas:app:event:ud:organizational_unit:push。

    解析后的 bizData 示例:同组织创建。

  2. 全量推送账户

    事件类型:urn:alibaba:idaas:app:event:ud:user:push。

    解析后的 bizData 示例:同账户创建。

  3. 全量推送组

    可通过该事件订阅全量推送组。

    事件类型: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

    用户显示名称