Trang chủ Proton

API cấp phát SCIM

Đọc
6 phút
Danh mục
Proton VPN for Business

Tổng quan

API Cấp phát SCIM (Hệ thống Quản lý Danh tính Liên miền) là một giao thức chuẩn để tự động hóa việc cấp phát và quản lý danh tính người dùng trong các ứng dụng dựa trên đám mây. Proton hỗ trợ API này, cho phép tạo, cập nhật, xóa và quản lý các tài khoản người dùng và các nhóm. API dựa trên đặc tả SCIM 2.0, cung cấp lược đồ người dùng chung và giao diện API RESTful để dễ dàng tích hợp.

Proton hỗ trợ các nhà cung cấp danh tính sau:

URL cơ sở cho tất cả cuộc gọi từ nhà cung cấp danh tính là: https://scim.proton.me/{tenantId}/v2/(cửa sổ mới). Tất cả các phương thức SCIM đều là nhánh của URL cơ sở này.

Xác thực

Mã thông báo phải được bao gồm trong tiêu đề Authorization với Loại là Bearer khi gọi bất kỳ phương thức SCIM nào. Mã thông báo này có thể được tạo và thay thế trong phần Single-sign-on > SCIM automatic provisioning. Nhấp vào nút “Tạo mã thông báo” và Sao chép mã thông báo đã tạo.

Ví dụ:

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

Người dùng

Các thuộc tính cốt lõi

idMột định danh duy nhất cho tài nguyên SCIM, chẳng hạn như Người dùng, được xác định bởi Proton.
userName (bắt buộc)Một định danh duy nhất cho người dùng. Ở đây chúng tôi sử dụng email làm Tên người dùng.
activeMột giá trị boolean cho biết người dùng có Hoạt động hay không. Giá trị mặc định là true.

Các thao tác

Truy xuất danh sách tất cả Người dùng được phân trang

Yêu cầu

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

Phản hồi

{
	"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
		}
	]
}

Tạo người dùng mới

Yêu cầu

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

Phản hồi

{
	"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"
	}
}

Truy xuất một Người dùng đơn lẻ

Yêu cầu

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

Phản hồi

{
	"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"
}

Xóa một người dùng

Yêu cầu

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

Các nhóm

Các thuộc tính cốt lõi

idMột định danh duy nhất cho tài nguyên SCIM, chẳng hạn như Người dùng, được xác định bởi Proton.
displayNameTên cho nhóm.
thành viênDanh sách các thành viên của nhóm.

Các thao tác

Lấy danh sách các nhóm

Yêu cầu

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

Phản hồi

{
	"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"
			}
		}
	]
}

Truy xuất chi tiết của một nhóm theo ID duy nhất của nhóm đó

Yêu cầu

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

Phản hồi

{
	"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"
	}
}

Xử lý lỗi

Các phản hồi được định dạng theo RFC-7644 mục 3.12(cửa sổ mới) được gửi kèm với mã Trạng thái HTTP cho biết bản chất của lỗi và nội dung phản hồi cung cấp chi tiết.

Phản hồi lỗi

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

Các lỗi phổ biến nhất

  • 400 Bad Request: Yêu cầu không hợp lệ hoặc không thể được phục vụ.
  • 404 Not Found: Tài nguyên được yêu cầu không thể tìm thấy.
  • 409 Conflict: Không thể hoàn tất yêu cầu do xung đột với trạng thái hiện tại của tài nguyên đích.
    • uniqueness: Một Giá trị thuộc tính duy nhất đã tồn tại trong hệ thống.
  • 500 Internal Server Error: Đã xảy ra lỗi ở phía máy chủ.