Beranda Proton

API provisi SCIM

Membaca
4 mnt
Kategori
Proton VPN for Business

Ikhtisar

API Provisi SCIM (System for Cross-domain Identity Management) adalah protokol standar untuk mengotomatiskan provisi dan pengelolaan identitas pengguna di aplikasi berbasis cloud. Proton mendukung API ini, yang memungkinkan untuk membuat, memperbarui, menghapus, dan mengelola akun serta grup pengguna. API ini didasarkan pada spesifikasi SCIM 2.0, yang menyediakan skema pengguna umum dan antarmuka RESTful API untuk kemudahan integrasi.

Proton mendukung penyedia identitas berikut:

URL dasar untuk semua panggilan dari penyedia identitas adalah: https://scim.proton.me/{tenantId}/v2/(jendela baru). Semua metode SCIM merupakan cabang dari URL dasar ini.

Autentikasi

Token harus disertakan dalam header Authorization dengan tipe Bearer saat memanggil salah satu metode SCIM. Token ini dapat dihasilkan dan diganti di bagian Single-sign-on > provisi otomatis SCIM. Klik tombol “Hasilkan token baru” dan salin token yang dihasilkan.

Sebagai contoh:

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

Pengguna

Atribut Inti

idPengidentifikasi unik untuk sumber daya SCIM, seperti pengguna, yang ditentukan oleh Proton.
userName (wajib)Pengidentifikasi unik untuk pengguna. Di sini email digunakan sebagai userName.
aktifBoolean yang menunjukkan apakah pengguna aktif. Nilai bawaannya adalah true.

Operasi

Mengambil daftar berhalaman dari seluruh pengguna

Permintaan

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

Respons

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

Membuat pengguna baru

Permintaan

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

Respons

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

Mengambil satu pengguna

Permintaan

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

Respons

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

Menghapus pengguna

Permintaan

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

Grup

Atribut Inti

idPengidentifikasi unik untuk sumber daya SCIM, seperti pengguna, yang ditentukan oleh Proton.
displayNameNama untuk grup.
membersDaftar anggota grup.

Operasi

Mendapatkan daftar grup

Permintaan

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

Respons

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

Mengambil rincian grup berdasarkan ID uniknya

Permintaan

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

Respons

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

Penanganan Kesalahan

Respons diformat mengikuti RFC-7644 pasal 3.12(jendela baru) yang dikirimkan dengan kode status HTTP yang menunjukkan sifat kesalahan dan isi respons yang memberikan rincian lebih lanjut.

Respons Kesalahan

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

Kesalahan yang paling umum

  • 400 Bad Request: Permintaan tidak valid atau tidak dapat dilayani.
  • 404 Not Found: Sumber daya yang diminta tidak dapat ditemukan.
  • 409 Conflict: Permintaan tidak dapat diselesaikan karena adanya konflik dengan keadaan saat ini dari sumber daya target.
    • uniqueness: Nilai atribut unik sudah ada di dalam sistem.
  • 500 Internal Server Error: Terjadi kesalahan pada sisi server.