孤儿账户数据处理¶
最后更新:2022-01-27
1. 用户故事¶
孤儿账户:应用系统中子账户没有关联IDP主账户, 找不到背后的真实用户。 作为IDaaS的管理员,能够查询到对接应用系统中存在的孤儿账户,然后针对孤儿账户可以选择主账户关联和删除操作。保证应用系统的访问安全。
2. 如何确定孤儿账户¶
以下是在IDaaS系统中如何确定某个业务系统中在IDaaS中的孤儿账户流程
2.1. 拉取HR的账户¶
在 机构及组 -> 人事组织 -> 导入 -> 添加拉取任务 处创建一个从HR拉取的一个导入任务(该任务实际上是connector的一个普通同步任务)。如何创建拉取任务,并拉取应用数据可以查看
项目数据初始化场景
2.2. 拉取下游应用账户的数据¶
在 机构及组 -> 应用群组 -> [具体应用群组] -> 应用账户拉取 -> 添加拉取任务 处创建从connector上配置的一个孤儿账户拉取同步任务 。
在创建完成任务后,需要点击任务名称旁边的 图标(查看任务详情及状态) -> 查看任务 跳转到,修改同步任务的属性,改为拉取孤儿账户模式,并填入idp中任务的uuid。
接下来需要在拉取前配置一个孤儿账户匹配的对比规则
不同的应用群组需要配置不同的孤儿账户匹配规则
2.3. 进行数据比对处理¶
若该任务是一个孤儿账户任务(取决于Connector任务配置上的属性)那么在应用群组的任务拉取的时候,IDaaS可能产生孤儿账户【主账户不存在IDaaS,但子账户有】 也可能会自动补全该应用群组关联应用的主子账户
3. 数据对比处理逻辑¶
3.1. connector调用IDaaS动接收业务账户接口¶
IDaaS会提供一个业务账户推送接口: /api/bff/v1.2/developer/scim/slave_account/receive
接口请求方法:POST
请求体:(和SCIM主数据创建几乎一样)
{
"appGroupTaskUuid": "应用群组任务uuid",
"externalId": "123467",
"userName": "user111",
"displayName": "张三",
"email": "user111@test.com",
"phoneNumber": "18100000000",
"phoneRegion": "+86",
"enabled": true,
"locked": true,
"description": "描述",
"expireTime": "2021-10-19 15:01",
"userBelongs": [
{
"belong": "ou1111",
"mainOu": true
}
],
"organzationsOrderList": [
{
"externalId": "ou1111",
"displayOrder": 1
}
],
"extendFields": {
"key1": "value1",
"key2": "value2"
}
}
3.2. 孤儿账户匹配规则¶
这个也是主子账户产生的时候的判断规则,主要有三个字段
表名:orphan_account_match_rule
字段名 |
类型 |
含义 |
---|---|---|
application_group_uuid |
String |
应用群组uuid |
master_account_field |
String |
主账户匹配字段 |
slave_account_field |
String |
子账户匹配字段 |
match_template |
String |
匹配模板,枚举类型 |
template_extra_value |
String |
补充除简单的可以通过模板来运算时额外需要的值 |
3.3. 业务账户表¶
表名 slave_account
核心字段如下
说明:此业务账户表是以应用维度来区分唯一性的
字段名 |
类型 |
含义 |
---|---|---|
application_uuid |
String |
应用uuid |
external_id |
String |
外部id |
username |
String |
用户名/登陆名 |
display_name |
String |
显示名称 |
String |
邮箱 |
|
phone_number |
String |
电话号码 |
phone_region |
String |
国家区号 |
enabled |
Boolean |
启用/禁用状态 |
locked |
Boolean |
锁定状态 |
description |
String |
描述 |
expire_time |
Date |
过期时间 |
user_belongs |
Array |
用户在所属组织下的信息 |
– ou_external_id |
String |
所属组织id |
– main_ou |
Boolean |
是否是主组织 |
– display_order |
String |
所属组织id |
extend_fields |
Map<String,String> |
账户的扩展属性 |
3.4. 拉取时序图¶
3.5. 孤儿账户匹配处理流程图¶
注意,生成主子账户时,都取用户名称字段