Proton 主页

SCIM 预配应用程序接口

阅读
2 分钟
类别
Proton VPN for Business

概览

SCIM(跨域身份管理系统)预配应用程序接口是一种标准协议,用于在基于云的应用中自动执行用户身份的预配和管理。Proton 支持此 API,允许您创建、更新、删除和管理用户帐户与群组。该 API 基于 SCIM 2.0 规范,提供通用用户架构和 RESTful API 接口,便于集成。

Proton 支持以下身份提供商:

来自身份提供商的全部调用的基础网址为:https://scim.proton.me/{tenantId}/v2/(新窗口)。全部 SCIM 方法都是此基础网址的分支。

身份验证

调用任何 SCIM 方法时,令牌必须包含在类型为 Bearer 的 Authorization 标题中。此令牌可在单点登录 > SCIM 自动预配部分中生成和更换。点击“生成新令牌”按钮并复制已生成的令牌。

例如:

GET /Users?count=10Host: scim.proton.meAccept: application/scim+jsonAuthorization: Bearer {token}

用户

核心属性

id由 Proton 定义的 SCIM 资源(如用户)的唯一标识符。
userName(必填)用户的唯一标识符。此处我们使用电子邮件作为 userName。
active布尔值,指示该用户是否已启用。默认值为 true。

操作

检索所有用户的分页列表

请求

GET /Users?count=1 Host: scim.proton.meAccept: application/scim+jsonAuthorization: Bearer {token}

响应

{
	"schemas": [
		"urn:ietf:params:scim:api:messages:2.0:ListResponse"
	],
	"totalResults": 1,
	"itemsPerPage": 1,
	"startIndex": 1,
	"Resources": [
		{
			"id": "avveKyJZ_cCkULxxxZj4_U8j1IwqaGkcso02I6bDFoyrfJSqqXLS3FToNOiwP1tNwBaaraqfKVE993xaVcYSxQ==",
			"userName": "test@sso.protonhub.org",
			"active": true
		}
	]
}

创建新用户

请求

POST /UsersHost: scim.proton.meAccept: application/scim+jsonAuthorization: Bearer {token}

响应

{
	"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
	"id": "avveKyJZ_cCkULxxxZj4_U8j1IwqaGkcso02I6bDFoyrfJSqqXLS3FToNOiwP1tNwBaaraqfKVE993xaVcYSxQ==",
	"userName": "test@sso.protonhub.org",
	"active": true,
	"meta": {
		"resourceType": "User",
		"created": "2024-07-25T04:39:27Z",
		"lastModified": "2024-07-25T04:39:27Z",
		"location": "https://scim.proton.me/{tenent-id}/v2/Users/avveKyJZ_cCkULxxxZj4_U8j1IwqaGkcso02I6bDFoyrfJSqqXLS3FToNOiwP1tNwBaaraqfKVE993xaVcYSxQ==",
		"version": "1"
	}
}

检索单个用户

请求

GET /Users/avveKyJZ_cCkUL1iBZj4_U8j1IxxxGkcso02I6xDFoyrfJSxxXLS3FToNOiwP1tNwBaaraqfKVExx3xaVcYSxQ==Host: scim.proton.meAccept: application/scim+jsonAuthorization: Bearer {token}

响应

{
	"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
	"id": "avveKyJZ_cCkUL1iBZj4_U8j1IxxxGkcso02I6xDFoyrfJSxxXLS3FToNOiwP1tNwBaaraqfKVExx3xaVcYSxQ==",
	"userName": "test@sso.protonhub.org",
	"active": true,
	"meta": {
		"resourceType": "User",
		"created": "2024-07-24T06:22:20Z",
		"lastModified": "2024-07-24T06:22:20Z",
		"location": "https://scim.proton.me/{tenentId}/v2/Users/avveKyJZ_cCkUL1iBZj4_U8j1IwqaGkcso02I6bDFoyrfJSqqXLS3FToNOiwP1tNwBaaraqfKVE993xaVcYSxQ==",
		"version": "1"
	},
	"externalId": "00uganxwluxxxxxxxxxx"
}

删除用户

请求

DELETE /Users/avveKyJZ_cCkUL1iBZj4_U8j1IxxxGkcso02I6xDFoyrfJSxxXLS3FToNOiwP1tNwBaaraqfKVExx3xaVcYSxQ==Host: scim.proton.meAccept: application/scim+jsonAuthorization: Bearer {token}

群组

核心属性

id由 Proton 定义的 SCIM 资源(如用户)的唯一标识符。
displayName群组名称。
members群组成员列表。

操作

获取群组列表

请求

GET /Groups?startIndex=1&count=10Host: scim.proton.meAccept: application/scim+jsonAuthorization: Bearer {token}

响应

{
	"schemas": [
		"urn:ietf:params:scim:api:messages:2.0:ListResponse"
	],
	"totalResults": 0,
	"itemsPerPage": 100,
	"startIndex": 1,
	"Resources": [
		{
			"id": "d27f32f6-1e03-4e34-b5b5-9b89c11ed54e",
			"displayName": "Admins",
			"members": [
				{
					"value": "2819c223-7f76-453a-919d-413861904646",
					"display": "John Doe"
				}
			],
			"meta": {
				"resourceType": "Group",
				"created": "2024-07-25T05:10:22Z",
				"lastModified": "2024-07-25T05:10:22Z",
				"location": "https://scim.proton.me/{tenentId}/v2/Groups/d27f32f6-1e03-4e34-b5b5-9b89c11ed54e"
			}
		}
	]
}

通过唯一 ID 检索群组的详细信息

请求

GET /Groups/d27f32f6-1e03-4e34-b5b5-9b89c11ed54eHost: scim.proton.meAccept: application/scim+jsonAuthorization: Bearer {token}

响应

{
	"id": "d27f32f6-1e03-4e34-b5b5-9b89c11ed54e",
	"displayName": "Admins",
	"members": [{ "value": "2819c223-7f76-453a-919d-xxxxxxxxxxxx", "display": "John Doe" }],
	"meta": {
		"resourceType": "Group",
		"created": "2024-07-25T05:10:22Z",
		"lastModified": "2024-07-25T05:10:22Z",
		"location": "https://scim.proton.me/{tenentId}/v2/Groups/d27f32f6-1e03-4e34-b5b5-9b89c11ed54e"
	}
}

错误处理

响应采用 RFC-7644 第 3.12 节(新窗口)规定的格式,并附有指示错误性质的 HTTP 状态代码,以及提供更多详细信息的响应正文。

错误响应

{
	"schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"],
	"detail": "UserName is already taken",
	"status": "400"
}

最常见的错误

  • 400 Bad Request:请求无效或无法以其他方式提供服务。
  • 404 Not Found:找不到所请求的资源。
  • 409 Conflict:由于与目标资源的当前状态存在冲突,无法完成请求。
    • uniqueness:系统中已存在该唯一属性值。
  • 500 Internal Server Error:服务器端发生错误。