SCIM同步接口

2023-03-21 13:50 星期二

获取accessToken

HTTP Method:GET
请求地址:https://serverurl/SCIM/v2/token                

接口功能: 获取SCIM API访问令牌,SCIM API 目前采用 OAuth2.0 进行授权认证,采用 client_credentials 模式。

请求参数:

参数名必选类型参数说明
client_idString客户端ID
client_secretString客户端秘钥

响应结果:

参数名必选类型参数说明
errcodeInt响应码,具体参见附录:响应码
errmsgString结果描述
access_tokenString访问令牌
refresh_tokenString刷新令牌
expires_inInt访问令牌有效期

成功示例:

{
   "errcode":200,
   "errmsg":"获取成功",
   "access_token": "25dd7965de493fa356a4cf7d53a034b217ffd7e8",
   "refresh_token": "2ead837826ab85f9681f23bccb959a23617f68ce",
   "expires_in": 7200
}                

刷新accessToken

HTTP Method:GET
请求地址:https://serverurl/SCIM/v2/token/refreshToken           

接口功能: 使用刷新令牌换取新访问令牌。

请求参数:

参数名必选类型参数说明
refresh_tokenString刷新令牌

响应结果:

参数名必选类型参数说明
errcodeInt响应码,具体参见附录:响应码
errmsgString结果描述
access_tokenString访问令牌
refresh_tokenString刷新令牌
expires_inInt访问令牌有效期

成功示例:

{
    "errcode":200,
    "errmsg":"获取成功",
    "access_token": "25dd7965de493fa356a4cf7d53a034b217ffd7e8",
    "refresh_token": "2ead837826ab85f9681f23bccb959a23617f68ce",
}     

创建机构

HTTP Method:POST
请求地址:https://serverurl/SCIM/v2/Organizations
Header Content-Type:application/json              

接口功能: 创建组织机构。

请求参数:

参数名必选类型参数说明
externalIdString外部源ID
displayNameString组织机构名,同一层级下唯一
codeString组织机构编码,不为空时唯一
parentString父组织机构 id
descriptionString描述

响应结果:

参数名必选类型参数说明
errcodeInt响应码,具体参见附录:响应码
errmsgString结果描述
idString机构ID

成功示例:

{
    "errcode":200,
    "errmsg": "created",
    "id": "52E4E27B313267C1288944EE6DA4AAD556C23A9EC06B4F04AF53"
}                      

删除机构

HTTP Method:DELETE
请求地址:https://serverurl/SCIM/v2/Organizations/{orgId}                     

接口功能: 删除组织机构。

请求参数:

参数名必选类型参数说明
orgIdString组织机构ID,创建时的ID。该参数放到URL中{orgId}位置

响应结果:

参数名必选类型参数说明
errcodeInt响应码,具体参见附录:响应码
errmsgString结果描述

成功示例:

{
    "errcode":200,
    "errmsg":"deleted"
}                                         

更新机构

HTTP Method:PUT
请求地址:https://serverurl/SCIM/v2/Organizations/{orgId}
Header Content-Type:application/json                                

接口功能: 更新组织机构。

请求参数:

参数名必选类型参数说明
orgIdString组织机构ID,创建时的ID。该参数放到URL中{orgId}位置
displayNameString组织机构名,同一层级下唯一
codeString组织机构编码,不为空时唯一
parentString父组织机构 id
descriptionString描述

响应结果:

参数名必选类型参数说明
errcodeInt响应码,具体参见附录:响应码
errmsgString结果描述

成功示例:

{
    "errcode":200,
    "errmsg":"updated"
}                                           

获取机构信息

HTTP Method:GET
请求地址:https://serverurl/SCIM/v2/Organizations/{orgId}                                    

接口功能: 获取组织机构信息。

请求参数:

参数名必选类型参数说明
orgIdString机构ID,创建时的ID。该参数放到URL中{orgId}位置

响应结果:

参数名必选类型参数说明
errcodeInt响应码,具体参见附录:响应码
errmsgString结果描述
metaObjectSCIM元数据信息,格式为: { "created":"2022-03-12T15:36:40.000+08:00", "resourceType": "Organization,"version":"2.0" }
schemasStringArrayscim 的 schema,返回字符串数组固定值:urn:ietf:params:scim:schemas:core:2.0:Organization
externalIdString外部源ID
codeString机构编码,不为空时唯一
displayNameString机构名,同一层级下唯一
orderInt机构同一层级顺序
parentString父机构 id
idString组织机构ID

成功示例:

{
    "errcode":200,
    "errmsg":"ok",
    "meta": {
		"created": "2022-03-12T14:06:34.000+08:00",
		"resourceType": "Organization",
		"version": "2.0"
	},
	"schemas": [
		"urn:ietf:params:scim:schemas:core:2.0:Organization"
	],
	"externalId": "278375e3-ead0-4f61-b27c-b4462e4b2115",
	"code": "3650417845",
	"displayName": "测试有限公司",
	"order": 1,
	"id": "3650417845",
	"parent": "0"
}

查询机构列表

HTTP Method:GET
请求地址:https://serverurl/SCIM/v2/Organizations?startIndex=1&count=10&filter=displayName eq 测试有限公司                                 

接口功能: 根据分页信息和过滤条件查询组织机构信息。返回结果在同一层级不保证顺序,不存在递归查询。业务端在使用时,需要全量拉取到所有的组织机构,并根据 parent 来确定组织机构之间的父子关系、order 来确定同一层级的组织机构之间的顺序。

请求参数:

参数名必选类型参数说明
startIndexInt开始下标 。默认:1
countInt每一页查询记录数。默认:100;最大 100
filterString查询条件,仅支持机构名、更新时间单一条件查询,不支持复杂的逻辑条件查询。操作符仅支持 eq、gt,filter 条件符合SCIM语法

响应结果:

参数名必选类型参数说明
errcodeInt响应码,具体参见附录:响应码
errmsgString结果描述
totalResultsInt总记录数
itemsPerPageInt每页大小,等于入参的 count
startIndexInt入参的 startIndex
schemasStringArraySCIM的Schemas,返回字符串数组固定值:[“urn:ietf:params:scim:api:messages:2.0:ListResponse”]
ResourcesArray返回的资源数组
Resources数据结构
Resources参数名必选类型参数说明
idString组织机构ID
externalIdString外部ID
metaObject SCIM元数据信息,格式为:
                                        
        {        
            "created":"2022-03-12T15:36:40.000+08:00",
            "version": "2.0",
            "resourceType": "Organization"
        }
                                        
                                    
schemasStringArraySCIM的 Schemas,返回字符串数组固定值:[“urn:ietf:params:scim:schemas:core:2.0:Organization “]
codeString机构编码,不为空时唯一
displayNameString机构名,同一层级下唯一
orderInt机构同一层级顺序
parentString父机构 id

成功示例:

{
    "errcode": 200,
    "errmsg": "ok",
    "totalResults":1,
    "itemsPerPage":10,
    "startIndex":1,
    "schemas":[
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "Resources":[
        {
            "id":"3650417845",
            "externalId": "d9ee38d3-86a6-4eca-b9bb-09860c4209b3",
            "meta":{
                "created":"2022-03-12T14:06:34.000+08:00",
                "resourceType":"Organization",
                "version": "2.0",
            },
            "schemas":[
                "urn:ietf:params:scim:schemas:core:2.0:Organization"
            ],
            "code":"3650417845",
            "displayName":"测试有限公司",
            "order":1,
            "parent":"0"
        }
    ]
}

创建用户

HTTP Method:POST
请求地址:https://serverurl/SCIM/v2/Users
Header Content-Type:application/json                                    

接口功能: 创建用户信息。

请求参数:

参数名必选类型参数说明
externalIdString外部源ID
userNameString用户名(唯一标识)
displayNameString用户姓名
passwordString密码
activeBoolean用户状态,true标识用户正常、false标识用户停用,默认为true
emailsArray邮箱,格式为:[{“value”:”test@youx.com”}]
phoneNumbersArray手机号,格式为:[{“value”:”18800001111″}]
organizationArray所属机构ID,创建机构中创建的ID,格式为:[“11″,”22”]
extensionsObject扩展属性,json格式

extensions数据结构:

参数名必选类型参数说明
multiValuedBoolean此属性是否多值,true代表多值,false代表单值
typeString属性类型,可选值:string、int、boolean…
valueObject属性值

请求示例:

{
    "externalId":"1",
    "userName":"zhangsan",
    "displayName":"张三",
    "password":"ECQD123455667",
    "emails":[
        {
            "value":" zhangsan@safe.com"
        }
    ],
    "phoneNumbers":[
        {
            "value":"18800001111"
        }
    ],
    "organization":[
        755
    ],
    "extensions":{
        "staffCard":{
            "multiValued":false,
            "type":"string",
            "value":"1088"
        },
        "staffEntryDate":{
            "multiValued":false,
            "type":"string",
            "value":"2022-03-08"
        }
    }
}

响应结果:

参数名必选类型参数说明
errcodeInt响应码,具体参见附录:响应码
errmsgString结果描述
idString用户ID

成功示例:

{
    "errcode":200,
    "errmsg":"created",
    "id": "52E4E27B313267C1288944EE6DA4AAD556C23A9EC06B4F04AF53"
}                                       

删除用户

HTTP Method:DELETE
请求地址:https://serverurl/SCIM/v2/Users/{userId}                                   

接口功能: 删除用户。

请求参数:

参数名必选类型参数说明
userIdString用户ID,创建时的ID。该参数放到URL中{userId}位置

响应结果:

参数名必选类型参数说明
errcodeInt响应码,具体参见附录:响应码
errmsgString结果描述

成功示例:

{
    "errcode":200,
    "errmsg":"deleted"
}                                        

更新用户

HTTP Method:PUT
请求地址:https://serverurl/SCIM/v2/Users/{userId}
Header Content-Type:application/json                                        

接口功能: 更新用户信息。

请求参数:

参数名必选类型参数说明
userIdString用户ID,创建时的ID。该参数放到URL中{userId}位置
userNameString用户名(唯一标识)
displayNameString用户姓名
passwordString密码
activeBoolean用户状态,true标识用户正常、false标识用户停用
emailsArray邮箱,格式为:[{“value”:”test@youx.com”}]
phoneNumbersArray手机号,格式为:[{“value”:”18800001111″}]
organizationArray所属机构ID,创建机构中创建的ID,格式为:[“11″,”22”]
extensionsObject扩展属性,json格式

extensions数据结构:

参数名必选类型参数说明
multiValuedBoolean此属性是否多值,true代表多值,false代表单值
typeString属性类型,可选值:string、int、boolean…
valueObject属性值

请求示例:

{
    "displayName": "张三",
    "userName":"zhangsan",
    "emails": [
        {
            "value": "zhangsan@safe.com"
        }
    ],
    "phoneNumbers": [
        {
            "value": "18800001111",
        }
    ],
     "organization": [3],
     "extensions":{
        "staffCard":{
            "multiValued":false,
            "type":"string",
            "value":"1088"
        },
        "staffEntryDate":{
            "multiValued":false,
            "type":"string",
            "value":"2022-03-08"
        }
    }
}

响应结果:

参数名必选类型参数说明
errcodeInt响应码,具体参见附录:响应码
errmsgString结果描述

成功示例:

{
     "errcode":200,
     "errmsg":"updated"
}                                          

获取用户信息

HTTP Method:GET
请求地址:https://serverurl/SCIM/v2/Users/{userId}                                     

接口功能: 获取用户信息。

请求参数:

参数名必选类型参数说明
userIdString用户ID,创建时的ID。该参数放到URL中{userId}位置。

响应结果:

参数名必选类型参数说明
errcodeInt响应码,具体参见附录:响应码
errmsgString结果描述
idString用户ID
externalIdString外部ID
metaObjectSCIM元数据信息,格式为:
{ "created":"2022-03-12T15:36:40.000+08:00", "version": "2.0", "resourceType": "User" }
schemasStringArraySCIM 的 Schemas,返回字符串数组固定值:[“urn:ietf:params:scim:schemas:core:2.0:User”]
userNameString用户名
displayNameString用户姓名
emailsArray邮箱,格式为:[{“value”:”zhangsan@mail.com”}]
phoneNumbersArray手机号,格式为:[{“value”:”18800001111″}]
organizationArray所属机构ID,创建机构中创建的ID,格式为:[“11″,”22”]
extensionsObject扩展属性,json格式

extensions数据结构:

参数名必选类型参数说明
multiValuedBoolean此属性是否多值,true代表多值,false代表单值
typeString属性类型,可选值:string、int、boolean…
valueObject属性值

成功示例:

{
   "errcode":200,
   "errmsg":"ok",
   "id": "7656",
	"externalId": "1",
	"meta": {
		"created": "2022-03-12T15:36:40.000+08:00",
		"version": "2.0",
		"resourceType": "User"
	},
	"schemas": [
		"urn:ietf:params:scim:schemas:core:2.0:User",
	],
	"userName": "zhangsan",
	"displayName": "张三",
	"active": true,
	"emails": [
		{
			"value": "zhangsan@mail.com"
		}
	],
	"phoneNumbers": [
		{
			"value": "18800001111"
		}
	],
	"organization": [
		"11", "22"
	],
   "extensions" :{
        "staffCard":{
            "multiValued":false,
            "type":"string",
            "value":"1088"
        },
        "staffEntryDate":{
            "multiValued":false,
            "type":"string",
            "value":"2022-03-08"
        }
    }

}

查询用户列表

HTTP Method:GET
请求地址:https://serverurl/SCIM/v2/Users?startIndex=1&count=10&filter=userName eq zhangsan                                       

接口功能: 根据分页信息和过滤条件查询用户信息。默认按照 createTime 降序查询。

请求参数:

参数名必选类型参数说明
startIndexInt开始下标 。默认:1
countInt每一页查询记录数。默认:100;最大 100
filterString查询条件,仅支持用户名、手机号、邮箱、组织机构、更新时间单一条件查询,不支持复杂的逻辑条件查询。操作符仅支持 eq、gt,filter 条件符合SCIM语法

响应结果:

参数名必选类型参数说明
errcodeInt响应码,具体参见附录:响应码
errmsgString结果描述
totalResultsInt总记录数
itemsPerPageInt每页大小,等于入参的 count
startIndexInt入参的 startIndex
schemasStringArraySCIM的Schemas,返回字符串数组固定值:[“urn:ietf:params:scim:api:messages:2.0:ListResponse”]
ResourcesArray返回的资源数组
Resources数据结构
Resources参数名必选类型参数说明
idString用户ID
externalIdString外部ID
metaObject SCIM元数据信息,格式为:
                                        
        {        
            "created":"2022-03-12T15:36:40.000+08:00",
            "version": "2.0",
            "resourceType": "User"
        }
                                        
                                    
schemasStringArraySCIM的 Schemas,返回字符串数组固定值:[“urn:ietf:params:scim:schemas:core:2.0:User”]
userNameString用户名
displayNameString用户姓名
emailsArray邮箱,格式为:[{“value”:”zhangsan@mail.com”}]
phoneNumbersArray手机号,格式为:[{“value”:”18800001111″}]
organizationArray所属机构ID,创建机构中创建的ID,格式为:[“11″,”22”]
extensionsObject扩展属性,json格式

成功示例:

{
   "errcode":200,
   "errmsg":"ok",
	"totalResults": 1,
	"itemsPerPage": 10,
	"startIndex": 1,
	"schemas": [
		"urn:ietf:params:scim:api:messages:2.0:ListResponse"
	],
	"Resources": [
		{
			"id": "7678",
			"externalId": "1",
			"meta": {
				"created": "2022-03-14T10:41:32.000+08:00",
				"version": "2.0",
				"resourceType": "User"
			},
			"schemas": [
				"urn:ietf:params:scim:schemas:core:2.0:User",
			],
			"userName": "zhangsan",
			"displayName": "张三",
			"active": true,
			"emails": [
				{
					"value": "zhangsan@mail.com"
				}
			],
			"phoneNumbers": [
				{
					"value": "18800001111"
				}
			],
			"organization": [
				"11", "22"
			],
		"extensions": {
        		"staffCard":{
            	                "multiValued":false,
            	                "type":"string",
            	                "value":"1088"
        		},
      	  		"staffEntryDate":{
           	 		"multiValued":false,
           	 		"type":"string",
            		        "value":"2022-03-08"
        		}
   		 	}
		},
	    …
	]
}

SCIM同步接口响应码

HTTP Status Code

响应码描述信息
200操作成功
201创建成功
204删除成功
400未发现授权信息,如:无效的令牌、参数合法性校验
403域名无效
404资源不存在,如:用户不存在、组织机构不存在
409资源已存在,如:用户名已被占用、外部ID已被占用
418消费者提供的模式未知
500发生意外异常

业务响应码

响应码描述信息
200操作成功(所有成功)
400未发现授权信息,如:无效的令牌、参数合法性校验
403域名无效
404资源不存在,如:用户不存在、组织机构不存在
409资源已存在,如:用户名已被占用、外部ID已被占用
418消费者提供的模式未知
500发生意外异常