IDaaS推数据到SP(第三方应用)
此同步方式,需要SP提供接口API。IDaaS通过调用这些API将数据同步到SP。需要注意这个接口需要业务系统根据我们提供的字段名称和错误返回码来进行开发,此接口的开发需要提供Basic协议或者Oauth协议来保护接口。现在,我们将常用的按照组织机构、账户、组来进行分类。
IDaaS请求SP所有的地址都基于在IT管理员应用处的SCIM配置的地址基础上,以不同的请求方式(POST,PUT,DELETE)请求该地址。
接口列表
以下是关于组织机构操作的API,包括:
IDaaS给SP添加组织机构
IDaaS给SP修改或移动组织机构
IDaaS给SP删除组织机构
以下是关于账户操作的API,包括:
IDaaS给SP添加账户
IDaaS给SP修改或移动账户
IDaaS给SP删除账户
以下是关于组操作的API,包括:
IDaaS给SP添加账户组
IDaaS给SP删除账户组
具体接口
前言
下面的是账户同步的第二种方式,即IDaaS推送到业务系统(SP)中,目前IDaaS仅提供一个给SP添加账户功能,其中需要注意的就是这个接口需要业务系统根据我们提供的字段名称和错误返回码来进行开发。
IDaaS请求SP所有的地址都基于在IT管理员应用处的SCIM配置的地址基础上,以不同的请求方式请求该地址。
IDaaS
IDaaS通过API给业务系统添加一个组织机构。此接口可以与“SP推至IDaaS的推送组织机构接口”共用一个实体类。
Request URI: /api/bff/v1.2/developer/scim/organization POST REST
Content-Type: application/json
业务系统需要根据我们提供的字段标准来开发接口,如下所示:
参数说明:
参数名 | 参数值 | 备注 |
---|---|---|
organization | {organization} | 组织机构的名称 |
parentUuid | {parentUuid} | 所属父级组织机构的uuid或外部ID |
rootNode | {rootNode} | 是否是根节点 |
organizationUuid | {organizationUuid} | 本组织机构的uuid或外部ID |
manager | {manager} | 组织机构的管理者,value是管理者账户的外部ID,displayName是用户名,管理者可为空 |
regionId | {regionId} | 组织机构所属的区域id,type为SELF_OU(自建组织机构)时有可能会有值,可为空,type为DEPARTMENT("自建部门")不会出现值 |
type | {manager} | SELF_OU(自建组织机构)或DEPARTMENT("自建部门") |
levelNumber | {levelNumber} | 部门排序号 |
extendField | {extendField} | 扩展字典,attributes为系统定义扩展字段 |
IDaaS推送的Request Body示例:
{
”childrenOuUuid”: [],
”description”: “”,
”extendField”: {
”attributes”: {
”ParentID”: “ee”,
”dutyuserid”: “”,
”OrganizationLevel”: “eeee”,
”ouDisplayName”: “”,
”ouCode”: “123”,
”cRY”: “hIght”,
”organizationLine”: “eee”
},
”description”: “”,
”expireTime”: “”
},
”manager”: [],
”organization”: “op”,
”organizationUuid”: “1090561725224650754”,
”parentUuid”: “4859503664755017696”,
”regionId”: “”,
”rootNode”: false,
”type”: “SELF_OU”,
”levelNumber”:“1001”
}
SP需要返回 Response Body示例:
{
"errorNumber": 0,
"errors": []
}
参数说明:
字段名 | 错误码 | 备注 |
---|---|---|
errorNumber,int类型 | 0 | SP返回错误码0,即视为成功 |
errors,错误信息,String集合类型 | 400 | 参数异常 |
IDaaS给SP修改或移动组织机构
IDaaS通过API给业务系统修改一个组织机构。此接口可以与“SP推至IDaaS的修改或移动组织机构接口”共用一个实体类。
Request URI: /api/bff/v1.2/developer/scim/organization PUT REST
Content-Type: application/json
业务系统需要根据我们提供的字段标准来开发接口,如下所示:
参数说明:
参数名 | 参数值 | 备注 |
---|---|---|
organization | {organization} | 组织机构的名称 |
parentUuid | {parentUuid} | 所属父级组织机构的uuid或外部ID |
organizationUuid | {organizationUuid} | 本组织机构的uuid或外部ID |
manager | {manager} | 组织机构的管理者,value是管理者账户的外部ID,displayName是用户名,管理者可为空 |
regionId | {regionId} | 组织机构所属的区域id,type为SELF_OU(自建组织机构)时有可能会有值,可为空,type为DEPARTMENT("自建部门")不会出现值 |
type | {manager} | SELF_OU(自建组织机构)或DEPARTMENT("自建部门") |
levelNumber | {levelNumber} | 部门排序号 |
extendField | {extendField} | 扩展字段,attributes为系统定义扩展字段 |
IDaaS推送的Request Body示例:
{
”childrenOuUuid”: [],
”description”: “”,
”extendField”: {
”attributes”: {
”ParentID”: “ee”,
”dutyuserid”: “”,
”OrganizationLevel”: “eeee”,
”ouDisplayName”: “”,
”ouCode”: “123”,
”cRY”: “hIght”,
”organizationLine”: “eee”
},
”description”: “”,
”expireTime”: “”
},
”manager”: [],
”organization”: “op”,
”organizationUuid”: “1090561725224650754”,
”parentUuid”: “4859503664755017696”,
”regionId”: “”,
”rootNode”: false,
”type”: “SELF_OU”,
”levelNumber”:“1001”
}
SP需要返回 Response Body示例:
{
"errorNumber": 0,
"errors": []
}
参数说明:
字段名 | 错误码 | 备注 |
---|---|---|
errorNumber | 0 | SP返回错误码0,即视为成功 |
errors,错误信息,String集合类型 | 400 | 参数异常 |
IDaaS给SP删除组织机构
IDaaS通过API给业务系统删除一个组织机构。
Request URI: /api/bff/v1.2/developer/scim/organization DELETE REST
Content-Type: application/json
业务系统需要根据我们提供的字段标准来开发接口,如下所示:
参数说明:
参数名 | 参数值 | 备注 |
---|---|---|
id | {id} | IDaaS中本组织机构的外部ID,对应应用系统的唯一标识 |
IDaaS推送的Request Body示例:
/api/application/scim/organization?id=4544581305390943066
SP需要返回 Response Body示例:
{
"errorNumber": 0,
"errors": []
}
参数说明:
字段名 | 错误码 | 备注 |
---|---|---|
errorNumber | 0 | SP返回错误码0,即视为成功 |
400 | 参数异常 | |
errors,错误信息,String集合类型 | 557 | 同步删除组织或组时,存在关联的不能删除 |
IDaaS给SP添加账户
IDaaS通过API给业务系统添加一个新的账户。此接口可以与“SP推至IDaaS的推送账户接口”共用一个实体类。
Request URI: /api/bff/v1.2/developer/scim/account POST REST
Content-Type: application/json
业务系统需要根据我们提供的字段标准来开发接口,如下所示:
参数说明:
参数名 | 参数值 | 备注 |
---|---|---|
userName | {userName} | 云IDaaS平台主账户,值需唯一 |
id | {id} | 用户ID,与外部ID值一样 |
displayName | {displayName} | 用户的显示名称,值需唯一 |
emails | {emails} | 邮箱 |
phoneNumbers | {phoneNumbers} | 手机号, 只能一个且唯一 |
externalId | {externalId} | 外部ID,值需唯一且不为空 |
belongs | {belongs} | 为账户指定组织单位 |
locked | boolean | 是否禁用账户,true禁用,户,false启用账户。禁用账户后将不能登录应用系统 |
extendField | {extendField} | 扩展字段,attributes为系统定义扩展字段 |
IDaaS推送的Request Body示例:
{
“belongs”: [{
“belongOuUuid”: “5088568925399532181”,
“ouDirectory”: “ /瀚华金融”,
“rootNode”: true
}],
“displayName”: “dedee”,
“emails”: [{
“primary”: “true”,
“type”: “work”,
“value”:“de@idsmanager.com”
}],
“extendField”:{
“attributes”:{
“workCode”: “123456”,
“sex”: “woman”
},
“description”: “”,
“expireTime”: “”
},
“externalId”: “1684952915216035459”,
“id”: “1684952915216035459”,
“password”: “”,
“phoneNumbers”: [{
“type”: “work”,
“value”: “”
}],
“userName”: “dedee”
}
SP需要返回 Response Body示例:
{
“errorNumber”: 0,
“errors”: []
}
参数说明:
字段名 | 错误码 | 备注 |
---|---|---|
errorNumber | 430 | 用户已经存在 |
errors,错误信息,String集合类型 | 400 | 参数异常 |
IDaaS给SP修改或移动账户
IDaaS通过API给业务系统修改一个账户。此接口可以与“SP推至IDaaS的修改或移动账户接口”共用一个实体类。
Request URI: /api/bff/v1.2/developer/scim/account PUT REST
Content-Type: application/json
业务系统需要根据我们提供的字段标准来开发接口,如下所示:
参数说明:
参数名 | 参数值 | 备注 |
---|---|---|
userName | {userName} | 云IDaaS平台主账户,值需唯一 |
password | {password} | 账户密码 |
id | {id} | 修改后的外部id |
displayName | {displayName} | 修改后的用户显示名称,值需唯一 |
emails | {emails} | 邮箱 |
phoneNumbers | {phoneNumbers} | 修改后的手机号, 只能一个且唯一 |
externalId | {externalId} | 修改后的外部ID,值需唯一 |
belongs | {belongs} | 为账户指定组织单位 |
extendField | {extendField} | 扩展字段,attributes为系统定义扩展字段 |
IDaaS推送的Request Body示例:
{
“belongs”: [{
“belongOuUuid”: “5088568925399532181”,
“ouDirectory”: “ /瀚华金融”,
“rootNode”: true
}],
“displayName”: “dedee”,
“emails”: [{
“primary”: “true”,
“type”: “work”,
“value”:“de@idsmanager.com”
}],
“extendField”: {
“attributes”: {
“workCode”: “123456”,
“sex”: “woman” },
“description”: “”,
“expireTime”: “”
},
“externalId”: “1684952915216035459”,
“id”: “1684952915216035459”,
“password”: “”,
“phoneNumbers”: [{
“type”: “work”,
“value”: “”
}],
“userName”: “dedee”
}
SP需要返回 Response Body示例:
{
“errorNumber”: 0,
“errors”: []
}
参数说明:
字段名 | 错误码 | 备注 |
---|---|---|
errorNumber | 0 | 代表成功 |
errors,错误信息,String集合类型 | 400 | 参数异常 |
IDaaS给SP删除账户
IDaaS通过API给业务系统删除一个账户。
Request URI: /api/bff/v1.2/developer/scim/account DELETE REST
Content-Type: application/json
业务系统需要根据我们提供的字段标准来开发接口,如下所示:
参数说明:
参数名 | 参数值 | 备注 |
---|---|---|
id | {id} | IDaaS中本账户的外部ID,对应应用系统的唯一标识 |
IDaaS推送的Request Body示例:
/api/application/scim/account?id=4544581305390943066
SP需要返回 Response Body示例:
{
“errorNumber”: 0,
“errors”: []
}
参数说明:
字段名 | 错误码 | 备注 |
---|---|---|
errorNumber | 0 | SP返回错误码0,即视为成功 |
errors,错误信息,String集合类型 | 400 | 参数异常 |
IDaaS给SP添加账户组
IDaaS通过API给业务系统添加一个账户组。此接口可以与“SP推至IDaaS的推送账户组接口”共用一个实体类。
Request URI: /api/bff/v1.2/developer/scim/group POST REST
Content-Type: application/json
业务系统需要根据我们提供的字段标准来开发接口,如下所示:
参数说明:
参数名 | 参数值 | 备注 |
---|---|---|
id | {id} | 组的id |
displayName | {displayName} | 组的名称 |
ouUuid | {ouUuid} | 所属父级组织机构的uuid或外部ID |
display | {displayName} | 用户的显示名称,值需唯一 |
members | {members} | 组里的成员,value是成员的外部ID,唯一,display是用户名,成员可为空 |
belongs | {belongs} | 为账户组指定组织单位 |
extendField | {extendField} | 扩展字段,attributes为系统定义扩展字段 |
IDaaS推送的Request Body示例:
{
”id”:“”,
”displayName”:“我的新建组”,
”ouUuid”:“856585455256525655”,
”belongs”:[{
”ouDirectory”:“九州/北京”,
”belongOuUuid”:“db7ded581e854a8d9782795963122eb1jBu4QSp6hXn”,
”rootNode”:false
}],
”members”:[{
”value”:“163ac7bbd3bc4714affa5c518d53a348Q3BtQC0FAFn”,
”display”:“abc@idsmanager.com”
}],
”extendField”:{
”description”: “”,
”expireTime”: “2117-01-01”,
”attributes”:{
”ReportManagerID”:“123456”,
”mana”:“woman”
}
}
}
SP需要返回 Response Body示例:
{
“errorNumber”: 0,
“errors”: []
}
参数说明:
字段名 | 错误码 | 备注 |
---|---|---|
errorNumber | 0 | SP返回错误码0,即视为成功 |
errors,错误信息,String集合类型 | 400 | 参数异常 |
IDaaS给SP删除账户组
IDaaS通过API给业务系统删除一个账户组。
Request URI: /api/bff/v1.2/developer/scim/group DELETE REST
Content-Type: application/json
业务系统需要根据我们提供的字段标准来开发接口,如下所示:
参数说明:
参数名 | 参数值 | 备注 |
---|---|---|
id | {id} | IDaaS中本账户组的外部ID,对应应用系统的唯一标识。值需唯一 |
IDaaS推送的Request Body示例:
/api/application/scim/group?id=665a46c056bc4445b381d869797cd6dbpHqdqNLe787
SP需要返回 Response Body示例:
{
“errorNumber”: 0,
“errors”: []
}
参数说明:
字段名 | 错误码 | 备注 |
---|---|---|
errorNumber | 0 | SP返回错误码0,即视为成功 |
errors | 400 | 参数异常 |
常见问题
1. 在IDaaS页面如何配置SCIM同步的接口
在应用详情页,点击SCIM配置
SCIM同步地址是SP应用提供,如上文同步组织机构有三个操作:新增,修改,删除,这三个接口的path相同,通过方法不同来区分,新增是post,修改是put,删除是delete,在SP中对应三个接口。

2. SCIM同步认证方式如何填写

该场景是通过SCIM接口从IDaaS往SP推送数据, 配置的接口是SP提供的,当选择Basic方式时,输入SP提供的用户名和密码, IDaaS会通过接口的header把用户名和密码推送给SP,SP校验用户名和密码成功,则接收IDaaS推送的数据变更。
3. 同步后SP没有接收到数据
可以通过IDaaS的同步记录,查看同步记录信息进行问题排查。
配置的接口同步地址,一定需要是公网可以访问的,否则IDaaS访问不到同步地址。
4. 何时触发IDaaS向SP同步数据
当在IDaaS页面对组织机构或者账户进行新增/修改/删除操作时,会弹出一个提示框,在弹框选择需要同步的应用, 点击确定进行同步。
5. SP如何接收变更的参数
SP通过在IDaaS页面上配置的接口,接收IDaaS推送的数据变更,不是查看浏览器发送的请求,以接口接收到的数据为准。
6:如果两个子系统中存在相同的账户名,同步到IDaaS平台如果处理,如果我本人在两个系统中的账户名不相同,同步到IDaaS又怎么处理
A:子业务系统同步到IDaaS中,会带一个唯一标识的参数,我们会根据唯一标识来判断是不是同一个账户,如果是则相互关联起来,如果不是则创建一个新的账户。唯一标识一般用邮箱或手机号。
7:账户同步的两种方式是什么?有什么区别?
1)业务系统通过IDaaS提供的基于SCIM协议的接口将账户同步到IDaaS平台;
2)IDaaS平台通过SP提供的接口将在IDaaS中创建的接口同步到SP中;
区别:区别就是谁接收传过来的账户谁提供接口,接口需基于SCIM协议开发,在这里IDaaS已经给了SP需要开锁所用到的接口字段,详情请看上面提供的API接口。