IDaaS提供一些数据同步的接口API(所有的API都是遵循SCIM协议),SP通过调用这些API,可以将数据同步到IDaaS。SP在调用IDaaS接口时,必须传递access_token。以下,我们将常用的API按照组织机构,账户,组进行分类。
前提条件
获取IDaaS-Base-URL
文档中的“IDaaS-Base-URL”需要替换为当前访问地址的主域,文中接口地址前也都需要替换主域地址。主域为IDaaS控制台中的用户访问的Portal的sso地址。
获取client-id和client-secret
获取access_token时需要使用client-id和client-secret,我们可以在管理员控制台获取到。
在管理员控制台添加一个应用,在应用的详情中可以启动API,API的两个值对应client-id和client-secret。
接口列表
获取access_token
以下是关于组织机构操作的API,包括:
推送组织机构
修改或移动组织机构
删除组织机构
查询组织机构
获取组织机构列表
获取根节点组织机构信息
获取组织机构的直属子级
以下是关于账户操作的API,包括:
推送账户
修改或移动账户
删除账户
获取账户信息
查询账户列表
以下是关于组操作的API,包括:
推送账户组
更新账户组
删除账户组
其他:
获取应用已经授权的组织机构及账户列表
具体接口
获取access_token
调用以下API接口时,需要先获取access_token,调用接口时传入access_token有两种方式:
URL值后:URL?access_token={access_token}
Header里面:Authorization bearer {access_token}(注意 bearer与access_token之间的空格)
access_token获取方式:向下面的URL进行POST请求,请求将返回JSON包含access_token
{IDaaS-Base-URL}/oauth/token?client_id={client-id}&client_secret={client-secret}&scope=read&grant_type=client_credentials
client_id和client_secret即为创建应用中的API Key和API Secret
推送组织机构
在SP中添加一个组织机构,调用此接口,将新添加的组织机构的信息同步到IDaaS。
同步时,请按照层级关系进行同步,先同步父级再同步子级
Request URI: /api/bff/v1.2/developer/scim/organization/createPOSTREST
Content-Type: application/json
Request Body:
{
"organizationName": "成都研发部",
"externalId": "123456",
"parentExternalId": "test3",
"type": "DEPARTMENT",
"sortNumber": "3",
"enabled":true,
"description": "负责产品研发",
"extendFields":{
"test1":"123"
}
}
请求参数说明:
参数名 | 参数值 | 类型 | 备注 |
organizationName | {organizationName} | String | 组织机构名称。必填 |
externalId | {externalId} | String | 组织机构的唯一ID,该ID是SP同步过来的,所以在IDaaS中称为外部ID。如果不填IDP将随机生成一个外部ID。选填 |
parentExternalId | {parentExternalId} | String | 所属的父级组织机构的唯一ID, 该ID是SP同步过来的, 所以在IDaaS中称为父级外部ID,通过在系统“机构及组”中在组织机构属性中查看参数“外部ID”即可。必填 |
type | {type} | String | 自建组织单位: SELF_OU 自建部门: DEPARTMENT 外部同步组织机构: EXTERNAL_OU 默认为DEPARTMENT.选填 |
rootNode | {rootNode} | boolean | 如果填true,将更新IDP中原本的根节点。选填 |
enabled | {enabled} | boolean | 机构的状态。true:启用,false:禁用,默认为true。选填 |
sortNumber | {sortNumber} | int | 用于展示排序。选填 |
description | {description} | String | 用于说明当前OU,不超过500个字符。选填 |
extendFields | {extendFields} | Map<String,String> | 自定义扩展的字段。在IDP数据字典中定义,如果自定义扩展的字段是必填选项,则该属性必填 |
Response Body:
{
"success": true,
"code": "200",
"message": null,
"requestId": "974CA7CA-1C98-4557-AC90-9425B2ED4719",
"data": {
"externalId": "123456",
"id": "123456"
}
}
返回参数说明:
succes代表请求是否成功,code为错误码 ,message为错误信息为接口。
success为true时,代表请求成功,此时code为200,data返回数据。请求失败时,success为false,code为一串语义化的错误码,如:InvalidParameter.ParentOUUuid.NotExist
参数名 | 说明 |
externalId | 组织机构的唯一ID,该ID是SP同步过来的,所以在IDaaS中称为外部ID。如果不填IDP将随机生成一个外部ID。 |
id | IDaaS平台机构的Uuid |
错误码说明:
HttpCode(请求状态码) | code(错误码) | message(错误信息) | 备注 |
200 | 200 | null | 请求成功 |
400 | InvalidParameter | 例如:父级机构123456不存在 | 请求参数错误 |
400 | InvalidParameter.ExternalId.Exist | 例如:外部ID重复,externalId:123456 | 外部ID重复 |
400 | InvalidParameter.Name.Exist | 例如:OU名称重复,OrganizationName:研发部 | 组织机构的名称已存在 |
403 | Forbidden | 没有权限操作该父OU | 没有权限操作 |
修改或移动组织机构
在SP中修改一个组织机构,调用此接口,将修改的组织机构的信息同步到IDaaS。
Request URI: /api/bff/v1.2/developer/scim/organization/updatePUTREST
Content-Type: application/json
Request Body:
{
"description": "",
"organizationName": "成都研发部",
"externalId": "123456",
"parentExternalId": "test3",
"enabled":false,
"type": null,
"sortNumber": "5",
"extendFields":{
"test1":"1235123"
}
}
请求参数说明:
参数名 | 参数值 | 类型 | 备注 |
externalId | {externalId} | String | 组织机构的唯一ID,该ID是SP同步过来的,在IDaaS中称为外部ID。必填 |
organizationName | {organizationName} | String | 组织机构名称。选填 |
parentExternalId | {parentExternalId} | String | 所属的父级组织机构的唯一ID, 该ID是SP同步过来的, 所以在IDaaS中称为父级外部ID,通过在系统"机构及组"中在组织机构属性中查看参数“外部ID”即可。选填 |
type | {type} | String | 自建组织单位: SELF_OU 自建部门: DEPARTMENT 外部同步组织机构: EXTERNAL_OU 默认为DEPARTMENT.选填 |
enabled | {enabled} | boolean | 机构的状态。true:启用,false:禁用。选填,填写则代表更新该项信息。 |
sortNumber | {sortNumber} | int | 用于展示排序。选填,填写则代表更新该项信息。 |
description | {description} | String | 用于说明当前OU,不超过500个字符。选填,填写则代表更新该项信息。 |
extendFields | {extendFields} | Map<String,String> | 在IDaaS数据字典中定义,如果自定义扩展的字段是必填选项,则该属性必填 |
Response Body:
{
"success": true,
"code": "200",
"message": null,
"requestId": "C98418A3-63B5-49CA-9C85-A820A65D3247",
"data": {
"externalId": "123456",
"id": "123456"
}
}
返回参数说明:
succes代表请求是否成功,code为错误码 ,message为错误信息为接口。
success为true时,代表请求成功,此时code为200,data返回数据。请求失败时,success为false,code为一串语义化的错误码,如:InvalidParameter.ParentOUUuid.NotExist
返回参数说明:
succes代表请求是否成功,code为错误码 ,message为错误信息为接口。
success为true时,代表请求成功,此时code为200,data返回数据。请求失败时,success为false,code为一串语义化的错误码,如:InvalidParameter.ParentOUUuid.NotExist
参数名 | 说明 |
externalId | 组织机构的唯一ID,该ID是SP同步过来的,所以在IDaaS中称为外部ID。如果不填IDP将随机生成一个外部ID。 |
id | IDaaS平台机构的Uuid |
错误码说明:
HttpCode(请求状态码) | code(错误码) | message(错误信息) | 备注 |
200 | 200 | null | 请求成功 |
400 | InvalidParameter | 例如:描述信息不能超过500个字符 | 请求参数错误 |
400 | EntityNotFound | 组织机构不存在 | 未查找到要更新的OU |
400 | InvalidParameter.Name.Exist | 例如:OU名称重复,OrganizationName:研发部 | 组织机构的名称已存在 |
400 | OperationDenied | OU不能移动到自己子级下 | 不被允许的操作 |
403 | Forbidden | 没有权限操作该父OU | 没有权限操作 |
删除组织机构
在SP中删除一个组织机构,调用此接口,在IDaaS中也删除这个组织机构
Request URI: /api/bff/v1.2/developer/scim/organization/deleteDELETEREST
Content-Type: application/json
请求示例:
/api/bff/v1.2/developer/scim/organization/delete?externalId=1694618271068407094
请求参数说明:
参数名 | 参数值 | 备注 |
externalId | {externalId} | IDaaS系统中组织机构的外部ID。 |
Response Body:
{
"success": true,
"code": "200",
"message": null,
"requestId": "30A38CA4-D640-4CBA-B85F-A0234D0181F1"
}
返回参数说明:
succes代表请求是否成功,code为错误码 ,message为错误信息为接口。
success为true时,代表请求成功,此时code为200,data返回数据。请求失败时,success为false,code为一串语义化的错误码,如:InvalidParameter.ParentOUUuid.NotExist
错误码说明:
HttpCode(请求状态码) | code(错误码) | message(错误信息) | 备注 |
200 | 200 | null | 请求成功 |
400 | InvalidParameter | 例如:外部id(externalId)不能为空 | 请求参数错误 |
400 | EntityNotFound | 组织机构不存在 | 未查找到要更新的OU |
400 | OperationDenied.OUContainsChildren | 该OU存在关联关系,不能删除 | 机构下存在子级机构或账户,不允许删除 |
403 | Forbidden | 没有权限操作该OU | 没有权限操作 |
查询组织机构
查询单个组织机构
Request URI: /api/bff/v1.2/developer/scim/organization/detailGETREST
请求示例:
/api/bff/v1.2/developer/scim/organization/detail?externalId=1694618271068407094
请求参数说明:
参数名 | 参数值 | 备注 |
externalId | {externalId} | IDaaS系统中组织机构的外部ID。 |
Response Body:
{
"success": true,
"code": "200",
"message": null,
"requestId": "B5D4A6D1-9C51-4AC3-A413-4A27EE1C1474",
"data": {
"organizationName": "ceshi导入0009",
"externalId": "9999",
"parentExternalId": "764712910283009725",
"type": "SELF_OU",
"rootNode": false,
"sortNumber": 0,
"enabled": true,
"description": null,
"extendFields": {
"4": "asd"
}
}
}
返回参数说明:
succes代表请求是否成功,code为错误码 ,message为错误信息为接口。
success为true时,代表请求成功,此时code为200,data返回数据。请求失败时,success为false,code为一串语义化的错误码,如:InvalidParameter.ParentOUUuid.NotExist
参数名 | 说明 |
externalId | 组织机构的外部ID |
organizationName | 组织机构名称 |
parentExternalId | 父组织机构外部ID |
type | 类型 |
enabled | 组织机构的状态 |
description | 描述 |
extendFields | 扩展字段 |
sortNumber | 机构的排序号 |
rootNode | 标识该机构是否为根节点 |
错误码说明:
HttpCode(请求状态码) | code(错误码) | message(错误信息) | 备注 |
200 | 200 | null | 请求成功 |
400 | InvalidParameter | 例如:外部id(externalId)不能为空 | 请求参数错误 |
400 | EntityNotFound | 组织机构不存在 | 未查找到要更新的OU |
403 | Forbidden | 没有权限操作该父OU | 没有权限操作 |
获取组织机构列表
SP通过调用此接口,可以查看所有的OU或者某OU及其所有子OU的组织机构列表。
Request URI: /api/bff/v1.2/developer/scim/organization/listGET
请求示例:
获取该公司的所有组织机构:/api/bff/v1.2/developer/scim/organization/list
获取某个OU下所有组织机构的信息:/api/bff/v1.2/developer/scim/organization/list?id=5986176890912195413
请求参数说明:
参数名 | 参数值 | 类型 | 备注 |
externalId | {externalId} | String | IDaaS系统中组织机构的外部ID。选填 |
如果不传值则返回该公司的所有组织机构。如果ID不为空:则返回对应OU下的组织机构的信息
Response Body:
{
"success": true,
"code": "200",
"message": null,
"requestId": "3CCA4939-170C-46AA-BE11-F3DE924FC0E9",
"data": {"organizations": [
{
"organizationName": "成都研发部",
"externalId": "2858068028015036528",
"parentExternalId": "129733886490329012",
"type": "DEPARTMENT",
"rootNode": false,
"sortNumber": 0,
"enabled": true,
"description": "",
"extendFields": {}
},
{
"organizationName": "成都分公司",
"externalId": "129733886490329012",
"parentExternalId": "6721629573848908864",
"type": "SELF_OU",
"rootNode": false,
"sortNumber": 0,
"enabled": true,
"description": "",
"extendFields": {}
},
{
"organizationName": "测试研发部3-3",
"externalId": "test3-3",
"parentExternalId": "test3",
"type": "DEPARTMENT",
"rootNode": false,
"sortNumber": 3,
"enabled": true,
"description": "通过SCIM同步组织机构",
"extendFields": {
"test1": "1235123"
}
},
{
"organizationName": "研发部3-4",
"externalId": "test3-4",
"parentExternalId": "test3",
"type": "DEPARTMENT",
"rootNode": false,
"sortNumber": 3,
"enabled": true,
"description": "研发分部",
"extendFields": {
"test1": "123"
}
}
]
}
}
返回参数说明:
succes代表请求是否成功,code为错误码 ,message为错误信息为接口。
success为true时,代表请求成功,此时code为200,data返回数据。请求失败时,success为false,code为一串语义化的错误码,如:InvalidParameter.ParentOUUuid.NotExist
参数名 | 说明 |
organizations | 返回的组织机构信息 |
├ externalId | 组织机构的外部ID |
├ organizationName | 组织机构名称 |
├ parentExternalId | 父组织机构外部ID |
├ type | 类型 |
├ rootNode | 标识该机构是否为根节点 |
├ sortNumber | 机构的排序号 |
├ enabled | 组织机构的状态 |
├ description | 描述 |
└ extendFields | 扩展字段 |
错误码说明:
HttpCode(请求状态码) | code(错误码) | message(错误信息) | 备注 |
200 | 200 | null | 请求成功 |
400 | EntityNotFound | 例如:组织机构123456不存在 | 未查找到externalId对应的OU |
403 | Forbidden | 没有权限操作该父OU | 没有权限操作 |
获取根节点组织机构信息
获取当前租户的根节点组织机构信息
Request URI: /api/bff/v1.2/developer/scim/organization/rootGETREST
请求示例:
/api/bff/v1.2/developer/scim/organization/root
Response Body:
{
"success": true,
"code": "200",
"message": null,
"requestId": "C757F8D6-E96A-4399-823C-E55AED4D59C3",
"data": {
"organizationName": "XXX技术有限公司",
"externalId": "6721629573848908864",
"parentExternalId": null,
"type": "SELF_OU",
"rootNode": true,
"sortNumber": 0,
"enabled": true,
"description": "",
"extendFields": {}
}
}
返回参数说明:
succes代表请求是否成功,code为错误码 ,message为错误信息为接口。
success为true时,代表请求成功,此时code为200,data返回数据。请求失败时,success为false,code为一串语义化的错误码,如:InvalidParameter.ParentOUUuid.NotExist
参数名 | 说明 |
externalId | 组织机构的外部ID |
organizationName | 组织机构名称 |
parentExternalId | 父组织机构外部ID |
type | 类型 |
enabled | 组织机构的状态 |
description | 描述 |
extendFields | 扩展字段 |
sortNumber | 机构的排序号 |
rootNode | 标识该机构是否为根节点 |
错误码说明:
HttpCode(请求状态码) | code(错误码) | message(错误信息) | 备注 |
200 | 200 | null | 请求成功 |
400 | InvalidParameter | cannot get current enterpriseUuid(获取不到当前租户信息) | 请求参数错误 |
400 | EntityNotFound | cannot get rootOU | 未查找根OU |
403 | Forbidden | 没有权限操作该父OU | 没有权限操作 |
获取组织机构的直属子级
SP通过调用此接口,可以查看指定OU的所有直属子OU。
Request URI: /api/bff/v1.2/developer/scim/organization/childrenGET
请求参数说明:
参数名 | 参数值 | 类型 | 备注 |
externalId | {externalId} | String | IDaaS系统中组织机构的外部ID。必填 |
如果不传值则返回该公司的所有组织机构;如果ID不为空:则返回对应OU下的组织机构的信息
请求示例:
/api/bff/v1.2/developer/scim/organization/children?externalId=1
Response Body:
{
"success": true,
"code": "200",
"message": null,
"requestId": "26AD790D-FB7D-4ED9-B07E-82448C929F88",
"data": {
"organizations": [
{
"organizationName": "销售部",
"externalId": "130015784",
"parentExternalId": "1",
"type": "DEPARTMENT",
"rootNode": false,
"sortNumber": 130015784,
"enabled": true,
"description": null,
"extendFields": {
}
},
{
"organizationName": "研发部",
"externalId": "129387071",
"parentExternalId": "1",
"type": "DEPARTMENT",
"rootNode": false,
"sortNumber": 129387071,
"enabled": true,
"description": null,
"extendFields": {
}
},
{
"organizationName": "测试部",
"externalId": "129083981",
"parentExternalId": "1",
"type": "DEPARTMENT",
"rootNode": false,
"sortNumber": 129083981,
"enabled": true,
"description": null,
"extendFields": {
}
}
]
}
}
返回参数说明:
succes代表请求是否成功,code为错误码 ,message为错误信息为接口。
success为true时,代表请求成功,此时code为200,data返回数据。请求失败时,success为false,code为一串语义化的错误码,如:InvalidParameter.ParentOUUuid.NotExist
参数名 | 说明 |
organizations | 返回的组织机构信息 |
├ externalId | 组织机构的外部ID |
├ organizationName | 组织机构名称 |
├ parentExternalId | 父组织机构外部ID |
├ type | 类型 |
├ rootNode | 标识该机构是否为根节点 |
├ sortNumber | 机构的排序号 |
├ enabled | 组织机构的状态 |
└ description | 描述 |
└ extendFields | 扩展字段 |
错误码说明:
HttpCode(请求状态码) | code(错误码) | message(错误信息) | 备注 |
200 | 200 | null | 请求成功 |
400 | InvalidParameter | 例如:外部id(externalId)不能为空 | 请求参数错误 |
400 | EntityNotFound | 组织机构不存在 | 未查找到externalId对应的OU |
403 | Forbidden | 没有权限操作该父OU | 没有权限操作 |
推送账户
SP中添加一个账户,调用此接口,将新添加的账户的信息同步到IDaaS中。
Request URI: /api/bff/v1.2/developer/scim/account/createPOSTREST
Content-Type: application/json
Request Body:
{
"externalId": "123456",
"userName": "developer2",
"displayName": "开发人员3",
"password": "Jdev@12345",
"email": "test2@****.com",
"phoneNumber": "",
"description": "",
"belongs": [
"test1","test2"
],
"extendFields": {
"test":"123456",
"test1":"woman"
}
}
请求参数说明:
参数名 | 参数值 | 类型 | 备注 | 是否必填 |
userName | {userName} | String | 云IDaaS平台主账户 | 必填 |
password | {password} | String | 云IDaaS平台主账户密码 | 非必填,若为空,则将使用系统随机密码。 |
displayName | {displayName} | String | 用户的显示名称 | 必填 |
externalId | {externalId} | String | 账户的唯一ID | 选填。如果不填,将随机生成一个,并在结果中返回 |
{email} | String | 邮箱 | 选填。 | |
phoneNumber | {phoneNumber} | String | 手机号, 只能一个且唯一 | 选填。 |
phoneRegion | {phoneRegion} | String | 手机区号,不填则默认为86 | 选填 |
belongs | {belongs} | Array | 所属ou的外部ID的集合 | 必填,具体看请求参数示例 |
locked | {locked} | boolean | 账户是否锁定,true:锁定账户,false:不锁定账户。锁定账户后将不能登录 IDaaS | 选填。填写则代表更新该项信息。 |
enabled | {enabled} | boolean | 用户启用状态,true启用,false禁用。禁用账户将不能登录 IDaaS | 非必填,不填默认启用账户 |
description | {description} | String | 描述信息 | 选填 |
expireTime | {expireTime} | String | 过期时间。格式:yyyy-MM-dd,例如:2020-01-12 | 选填 |
extendFields | {extendFields} | Map<String,String> | 自定义扩展的字段,在IDP数据字典中定义。 | 选填,填写则代表更新该项信息。更新时,如果自定义扩展的字段是必填选项,则该属性必填 |
Response Body:
失败示例:
{
"success": false,
"code": "InvalidParameter",
"message": "密码不符合密码策略 / 邮箱(email): test@****.com 已经存在 / 所属组织机构(belongs):123456不存在",
"requestId": "7BA02087-4789-4FA6-A414-45BAC671945E",
"data": null
}
成功示例:
{
"success": true,
"code": "200",
"message": null,
"requestId": "BF66FA08-E57B-4387-90C0-A72E41307239",
"data": {
"externalId": "123456"
"id":"e717a0cd5b1059bda8a6dd35cfce8e48DxlBg123456"
}
}
返回参数说明:
succes代表请求是否成功,code为错误码 ,message为错误信息为接口。
success为true时,代表请求成功,此时code为200,data返回数据。请求失败时,success为false,code为一串语义化的错误码,如:InvalidParameter.ParentOUUuid.NotExist
参数名 | 说明 |
externalId | 账户的唯一ID,该ID是SP同步过来的,所以在IDaaS中称为外部ID。如果不填IDP将随机生成一个外部ID。 |
id | IDaaS平台账户的Uuid |
错误码说明:
HttpCode(请求状态码) | code(错误码) | message(错误信息) | 备注 |
200 | 200 | null | 请求成功 |
400 | InvalidParameter | 例如:账户名称不能为空 | 请求参数错误 |
400 | InvalidParameter.ExternalId.Exist | externalId外部ID重复 | 外部ID重复 |
400 | InvalidParameter.Name.Exist | 账户名(username)已经存在 | 账户名称已经存在 |
400 | InvalidParameter.DisplayName.Exist | 显示名已经存在 | 显示名已经存在 |
400 | InvalidParameter.Email.Exist | 邮箱(email)已被其他账户绑定 | 邮箱(email)已被其他账户绑定 |
400 | InvalidParameter.PhoneNumber.Exist | 手机号(phoneNumber)已被其他账户绑定 | 手机号(phoneNumber)已被其他账户绑定 |
400 | EntityNotFound | 例如:所属组织机构(belongs):123456不存在 | 未查找到externalId对应的OU |
修改或移动账户
SP中修改一个账户,调用此接口,将修改的账户的信息同步到IDaaS中。
Request URI: /api/bff/v1.2/developer/scim/account/update PUTREST
Content-Type:application/json
Request Body:
{
"externalId": "test-2",
"userName": "test-2",
"displayName": "test-3",
"password": "Jzyt@123456",
"email": "test2@****.com",
"phoneNumber": "188****0900",
"expireTime": "2117-01-01",
"description": "123ttt",
"locked":false,
"belongs": [
"test2"
],
"extendFields": {
"test":"t",
"test1":"woman123"
}
}
请求参数说明:
参数名 | 参数值 | 类型 | 备注 | 是否必填 |
userName | {userName} | String | 云IDaaS平台主账户 | 选填,userName和externalId选填一个。 |
password | {password} | String | 云IDaaS平台主账户密码 | 选填。填写则代表更新该项信息。 |
displayName | {displayName} | String | 用户的显示名称 | 选填。填写则代表更新该项信息。 |
externalId | {externalId} | String | 账户的唯一ID | 选填,userName和externalId选填一个。 |
{email} | String | 邮箱 | 选填。填写则代表更新该项信息。 | |
phoneNumber | {phoneNumber} | String | 手机号, 只能一个且唯一 | 选填。填写则代表更新该项信息。 |
belongs | {belongs} | String | 所属OU外部ID的集合,必须存在 | 选填。填写则代表更新该项信息。具体看请求参数示例 |
locked | {locked} | boolean | 账户是否锁定,true:锁定账户,false:不锁定账户。锁定账户后将不能登录 IDaaS | 选填。填写则代表更新该项信息。 |
enabled | {enabled} | boolean | 用户启用状态,true启用,false禁用。禁用账户将不能登录 IDaaS | 选填,不填默认启用账户 |
description | {description} | String | 描述信息 | 选填。填写则代表更新该项信息。 |
expireTime | {expireTime} | String | 过期时间。格式:yyyy-MM-dd,例如:2020-01-12 | 选填。填写则代表更新该项信息。 |
extendFields | {extendFields} | Map<String,String> | 自定义扩展的字段,在IDP数据字典中定义。 | 选填,填写则代表更新该项信息。更新时,如果自定义扩展的字段是必填选项,则该属性必填 |
Response Body:
失败示例:
{
"success": false,
"code": "InvalidParameter",
"message": "密码不符合密码策略 / 邮箱(email): test@****.com 已经存在 / 所属组织机构(belongs):123456不存在",
"requestId": "7BA02087-4789-4FA6-A414-45BAC671945E",
"data": null
}
成功示例:
{
"success": true,
"code": "200",
"message": null,
"requestId": "BF66FA08-E57B-4387-90C0-A72E41307239",
"data": {
"externalId": "123456"
"id":"e717a0cd5b1059bda8a6dd35cfce8e48DxlBg123456"
}
}
返回参数说明:
succes代表请求是否成功,code为错误码 ,message为错误信息为接口。
success为true时,代表请求成功,此时code为200,data返回数据。请求失败时,success为false,code为一串语义化的错误码,如:InvalidParameter.ParentOUUuid.NotExist
返回参数说明:
succes代表请求是否成功,code为错误码 ,message为错误信息为接口。
success为true时,代表请求成功,此时code为200,data返回数据。请求失败时,success为false,code为一串语义化的错误码,如:InvalidParameter.ParentOUUuid.NotExist
参数名 | 说明 |
externalId | 组织机构的唯一ID,该ID是SP同步过来的,所以在IDaaS中称为外部ID。如果不填IDP将随机生成一个外部ID。 |
id | IDaaS平台机构的Uuid |
错误码说明:
HttpCode(请求状态码) | code(错误码) | message(错误信息) | 备注 |
200 | 200 | null | 请求成功 |
400 | InvalidParameter | 例如:账户名称不能为空 | 请求参数错误 |
400 | InvalidParameter.ExternalId.Exist | externalId外部ID重复 | 外部ID重复 |
400 | InvalidParameter.Name.Exist | 账户名(username)已经存在 | 账户名称已经存在 |
400 | InvalidParameter.DisplayName.Exist | 显示名已经存在 | 显示名已经存在 |
400 | InvalidParameter.Email.Exist | 邮箱(email)已被其他账户绑定 | 邮箱(email)已被其他账户绑定 |
400 | InvalidParameter.PhoneNumber.Exist | 手机号(phoneNumber)已被其他账户绑定 | 手机号(phoneNumber)已被其他账户绑定 |
400 | InvalidParameter.ExternalId.NotExist | 通过externalId查询不到账户 | 未查找到externalId对应的账户 |
400 | EntityNotFound | 例如:所属组织机构(belongs):123456不存在 | 未查找到externalId对应的OU |
删除账户
在SP中删除一个账户,通过调用此接口,删除IDaaS中该账户信息。
Request URI: /api/bff/v1.2/developer/scim/account/delete DELETEREST
请求参数说明:
参数名 | 参数值 | 备注 |
externalId | {externalId} | IDaaS系统中账户的外部ID。 |
请求示例:
/api/bff/v1.2/developer/scim/account/delete?externalId=4544581305390943066
Response Body:
{
"success": true,
"code": "200",
"message": null,
"requestId": "BF66FA08-E57B-4387-90C0-A72E41307239",
"data": null
}
返回参数说明:
succes代表请求是否成功,code为错误码 ,message为错误信息为接口。
success为true时,代表请求成功,此时code为200,data返回数据。请求失败时,success为false,code为一串语义化的错误码,如:InvalidParameter.ParentOUUuid.NotExist
错误码说明:
HttpCode(请求状态码) | code(错误码) | message(错误信息) | 备注 |
200 | 200 | null | 请求成功 |
400 | InvalidParameter | 例如:外部id(externalId)不能为空 | 请求参数错误 |
400 | EntityNotFound | 账户不存在 | 未查找到要删除的账户 |
403 | OperationDenied | 例如:管理员 admin 不能删除 | 删除操作不被允许 |
获取账户信息
在SP中通过调用此接口,获取IDaaS中账户信息。
Request URI:/api/bff/v1.2/developer/scim/account/detailGETREST
Content-Type:application/json
请求参数说明:
参数名 | 参数值 | 备注 |
externalId | {externalId} | IDaaS系统中账户的外部ID。必填 |
请求示例:
/api/bff/v1.2/developer/scim/account/detail?externalId=123456&access_token=bcab-ae1.2123456461626-590-496789-73082615978
Response Body:
{
"success": true,
"code": "200",
"message": null,
"requestId": "278D7B88-6C26-4C7F-90A7-F126CF52F3E1",
"data": {
"externalId": "123456",
"username": "test-2",
"displayName": "test-3",
"phoneNumber": "188****0900",
"email": "test2@****.com",
"enabled": true,
"locked": false,
"description": "123ttt",
"extendFields": {
"test": "t",
"test1": "woman123"
},
"belongs": [
"test2"
]
}
}
返回参数说明:
succes代表请求是否成功,code为错误码 ,message为错误信息为接口。
success为true时,代表请求成功,此时code为200,data返回数据。请求失败时,success为false,code为一串语义化的错误码,如:InvalidParameter.ParentOUUuid.NotExist
参数名 | 参数值 | 备注 |
externalId | {externalId} | IDaaS系统中账户的外部ID |
username | {username} | 用户名 |
displayName | {displayName} | 显示名 |
phoneNumber | {phoneNumber} | 手机号 |
{email} | 邮箱 | |
locked | {locked} | 账号是否锁定,true为锁定,false为未锁定 |
enabled | {enabled} | 账号是否可用,true为启用,false禁用 |
belongs | {belongs} | 账户所属组织机构列表 |
extendFields | {extendFields} | 扩展字段,用于账户保存的自定义字段 |
错误码说明:
HttpCode(请求状态码) | code(错误码) | message(错误信息) | 备注 |
200 | 200 | null | 请求成功 |
400 | InvalidParameter | 例如:外部id(externalId)不能为空 | 请求参数错误 |
400 | InvalidParameter.ExternalId.NotExist | externalId不存在 | 未查找到该账户 |
查询账户列表
在SP中通过调用此接口,获取IDaaS中账户列表信息。
Request URI: /api/bff/v1.2/developer/scim/account/listGETREST
Content-Type:application/json
请求参数说明:
参数名 | 参数值 | 备注 |
ouExternalId | {ouExternalId} | 指定具体组织机构的ID,可选 |
createStartDate | {createStartDate} | 指定账户创建开始日期, 格式:yyyy-MM-dd,如:2018-01-01,可选 |
createEndDate | {createEndDate} | 指定账户创建结束日期, 格式:yyyy-MM-dd,如:2018-01-30,可选 |
start | {start} | 可选,分页开始位置,默认0 |
limit | {limit} | 可选,分页数据条件限制,默认10,最大100 |
请求示例:
/api/bff/v1.2/developer/scim/account/list?ouExternalId=test&access_token=bcab-ae1.22461626-590-496789-73082615978
Response Body:
{
"success": true,
"code": "200",
"message": null,
"requestId": "5709C39A-D53A-4D74-8765-7D763907877B",
"data": {
"total": 3,
"accounts": [
{
"externalId": "3543180585310896590",
"username": "developer2",
"displayName": "开发人员3",
"phoneNumber": "",
"email": "test2@****.com",
"enabled": true,
"locked": false,
"description": "来自应用{test-developer}的同步",
"extendFields": {
"test": "123456",
"test1": "woman"
},
"belongs": [
"test2",
"test1"
]
},
{
"externalId": "test-2",
"username": "test-2",
"displayName": "test-3",
"phoneNumber": "188****0900",
"email": "test2@****.com",
"enabled": false,
"locked": false,
"description": "123ttt",
"extendFields": {
"test": "t",
"test1": "woman123"
},
"belongs": [
"test2"
]
},
{
"externalId": "test-1",
"username": "test-1",
"displayName": "test-1",
"phoneNumber": "",
"email": "tangyuehan@idsmanager.com",
"enabled": false,
"locked": false,
"description": "来自应用{test-developer}的同步",
"extendFields": {},
"belongs": [
"test2",
"test1"
]
}
]
}
}
返回参数说明:
succes代表请求是否成功,code为错误码 ,message为错误信息为接口。
success为true时,代表请求成功,此时code为200,data返回数据。请求失败时,success为false,code为一串语义化的错误码,如:InvalidParameter.ParentOUUuid.NotExist
参数名 | 参数值 | 备注 |
externalId | {externalId} | IDaaS系统中账户的外部ID |
username | {username} | 用户名 |
phoneNumber | {phoneNumber} | 手机号 |
{email} | 邮箱 | |
locked | {locked} | 账号是否锁定,true为锁定,false为未锁定 |
enabled | {enabled} | 账号是否可用,true为启用,false禁用 |
belongs | {belongs} | 账户所属组织机构列表 |
extendFields | {extendFields} | 扩展字段,用于账户保存的自定义字段 |
错误码说明:
HttpCode(请求状态码) | code(错误码) | message(错误信息) | 备注 |
200 | 200 | null | 请求成功 |
400 | InvalidParameter | 例如:Invalid createStartDate | 请求参数错误 |
推送账户组
在SP中添加一个组,通过调用此接口,将组的信息推送到IDaaS中。
Request URI: /api/bff/v1.2/developer/scim/group/createPOSTREST
Content-Type: application/json
Request Body:
{
"externalId": "121-11",
"displayName": "测试同步组11",
"ouExternalId": "605016592710192945",
"members": [
{
"accountExternalId":"",
"username":"test1"
}
],
"extendFields": {
"test":"123456"
}
}
请求参数说明:
参数名 | 参数值 | 类型 | 备注 |
externalId | {externalId} | String | IDaaS系统中账户组的外部ID,唯一。选填,不填时,系统会随机生成一个,并在结果中返回 |
displayName | {displayName} | String | 组显示名称。必填 |
ouExternalId | {ouExternalId} | String | 所属组织单位(OU)的外部ID,必填 |
description | {description} | String | 描述信息,选填 |
members | {members} | String | 组成员,已经存在的账户外部ID和账户名,accountExternalId是账户外部ID,username是账户名 |
extendFields | {extendFields} | Map | 自定义扩展字段,选填 |
Response Body:
{"success": true,
"code": "200",
"message": null,
"requestId": "BF66FA08-E57B-4387-90C0-A72E41307239",
"data": {
"externalId":"123456"
}
}
success代表请求是否成功,code为错误码 ,message为错误信息为接口。
success为true时,代表请求成功,此时code为200,data返回数据。请求失败时,success为false,code为一串语义化的错误码,如:InvalidParameter.ParentOUUuid.NotExist
错误码说明:
HttpCode(请求状态码) | code(错误码) | message(错误信息) | 备注 |
200 | 200 | null | 请求成功 |
400 | InvalidParameter | 例如:组名称不能为空 | 请求参数错误 |
400 | InvalidParameter.DisplayName.Exist | 当前OU下,组名已经存在 | 显示名已经存在 |
400 | InvalidParameter.ExternalId.Exist | externalId已存在 | externalId已存在 |
400 | EntityNotFound | OU不存在 | 组隶属的OU不存在 |
403 | Forbidden | 没有权限操作该组 | 没有权限操作该组 |
更新账户组
在SP中更新一个组,通过调用此接口,将组的信息推送到IDaaS中。
Request URI: /api/bff/v1.2/developer/scim/group/updatePUTREST
Content-Type: application/json
Request Body:
{
"externalId": "121",
"description": "tttt测试",
"displayName": "测试t121",
"extendFields": {
"test":"ttt测试"
}
}
请求参数说明:
参数名 | 参数值 | 类型 | 备注 |
externalId | {externalId} | String | IDaaS系统中账户组的外部ID,唯一。必填 |
displayName | {displayName} | String | 组显示名称。选填,填写则代表更新该项信息。 |
description | {description} | String | 描述信息,选填。填写则代表更新该项信息。 |
extendFields | {extendFields} | Map | 自定义扩展字段,选填,填写时代表更新。 |
Response Body:
{
"success": true,
"code": "200",
"message": null,
"requestId": "BF66FA08-E57B-4387-90C0-A72E41307239",
"data": null
}
返回参数说明:
succes代表请求是否成功,code为错误码 ,message为错误信息为接口。
success为true时,代表请求成功,此时code为200,data返回数据。请求失败时,success为false,code为一串语义化的错误码,如:InvalidParameter.ParentOUUuid.NotExist
错误码说明:
HttpCode(请求状态码) | code(错误码) | message(错误信息) | 备注 |
200 | 200 | null | 请求成功 |
400 | InvalidParameter | 例如:组的externalId参数不能为空 | 请求参数错误 |
400 | InvalidParameter.DisplayName.Exist | 当前OU下,组名已经存在 | 显示名已经存在 |
400 | InvalidParameter.ExternalId.NotExist | externalId不存在 | externalId不存在 |
403 | Forbidden | 没有权限操作该组 | 没有权限操作该组 |
删除账户组
在SP中删除一个组,通过调用此接口,将IDaaS中的组删除。
Request URI: /api/bff/v1.2/developer/scim/group/deleteDELETEREST
Content-Type:application/json
请求参数说明:
参数名 | 参数值 | 备注 |
externalId | {externalId} | IDaaS系统中账户组的外部ID。 |
Response Body:
{
"success": true,
"code": "200",
"message": null,
"requestId": "BF66FA08-E57B-4387-90C0-A72E41307239",
"data": null
}
返回参数说明:
succes代表请求是否成功,code为错误码 ,message为错误信息为接口。
success为true时,代表请求成功,此时code为200,data返回数据。请求失败时,success为false,code为一串语义化的错误码,如:InvalidParameter.ParentOUUuid.NotExist
错误码说明:
HttpCode(请求状态码) | code(错误码) | message(错误信息) | 备注 |
200 | 200 | null | 请求成功 |
400 | InvalidParameter | 例如:组的externalId参数不能为空 | 请求参数错误 |
400 | EntityNotFound | 例如:查询不到组信息 | 未查询到组信息 |
400 | OperationDenied.GroupContainsChildren | 例如:组有关联成员(如有子成员),不能删除 | 组有关联成员(如有子成员),不能删除 |
403 | Forbidden | 没有权限操作该组 | 没有权限操作该组 |
获取应用已经授权的组织机构及账户列表
根据应用的uuid获取直接授权的组织机构及账户的外部ID。
Request URI: /api/bff/v1.2/developer/scim/application/authorized/listGETREST
请求示例:
/api/bff/v1.2/developer/scim/application/authorized/list?applicationUuid=1694618271068407094
请求参数说明:
参数名 | 参数值 | 备注 |
applicationUuid | {applicationUuid} | IDaas中应用的唯一标识 |
Response Body:
{
"success": true,
"code": "200",
"message": null,
"requestId": "2230CE9E-4674-407C-A006-D29ACD9DADDB",
"data": {
"ouExternalIds": [
"1",
"129387071",
"4122068885249961546"
],
"accountExternalIds": [
"4484474128951618300",
"5812895747601718104"
]
}
}}
返回参数说明:
succes代表请求是否成功,code为错误码 ,message为错误信息为接口。
success为true时,代表请求成功,此时code为200,data返回数据。请求失败时,success为false,code为一串语义化的错误码,如:InvalidParameter.ParentOUUuid.NotExist
参数名 | 说明 |
ouExternalIds | 已授权的组织机构外部ID列表 |
accountExternalIds | 已授权的账户外部ID列表 |
错误码说明:
HttpCode(请求状态码) | code(错误码) | message(错误信息) | 备注 |
200 | 200 | null | 请求成功 |
400 | InvalidParameter | 例如:applicationUuid不能为空 | 请求参数错误 |
400 | EntityNotFound | 例如:无效的applicationUuid | 通过applicationUuid未找到对应的应用 |
403 | Forbidden | 例如:没有权限操作该父OU | 没有权限操作 |