Pagina principală Proton

API de provizionare SCIM

Lectură
4 min
Categorie
Proton VPN for Business

Prezentare generală

API-ul de aprovizionare SCIM (System for Cross-domain Identity Management) este un protocol standard pentru automatizarea aprovizionării și gestionării identităților utilizatorilor în aplicații bazate pe cloud. Proton oferă asistență pentru acest API, care vă permite să creați, actualizați, ștergeți și să gestionați conturi de utilizator și grupuri. API-ul se bazează pe specificația SCIM 2.0, care oferă o schemă comună de utilizator și o interfață API RESTful pentru o integrare ușoară.

Proton oferă asistență pentru următorii furnizori de identitate:

URL-ul de bază pentru toate apelurile de la furnizorul de identitate este: https://scim.proton.me/{tenentId}/v2/(fereastră nouă). Toate metodele SCIM sunt ramificații ale acestui URL de bază.

Autentificare

Tokenul trebuie inclus într-un antet Authorization cu un Tip de Bearer atunci când apelați oricare dintre metodele SCIM. Acest token poate fi generat și înlocuit în secțiunea Single-sign-on > SCIM automatic provisioning. Faceți clic pe butonul “Generare cod de acces nou” și copiați tokenul generat.

De exemplu:

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

Utilizatori

Atribute de bază

idUn identificator unic pentru o resursă SCIM, cum ar fi un utilizator, care este definit de Proton.
nume de utilizator (obligatoriu)Un identificator unic pentru utilizator. Aici folosim e-mailul ca nume de utilizator.
activO valoare booleană care indică dacă utilizatorul este Activă. Valoarea implicită este true.

Operațiuni

Preluarea unei liste paginate cu toți utilizatorii

Cerere

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

Răspuns

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

Creare utilizator nou

Cerere

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

Răspuns

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

Preluarea unui singur utilizator

Cerere

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

Răspuns

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

Ștergere utilizator

Cerere

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

Grupuri

Atribute de bază

idUn identificator unic pentru o resursă SCIM, cum ar fi un utilizator, care este definit de Proton.
displayNameNume pentru grup.
membriO listă de membri ai grupului.

Operațiuni

Obținere listă de Grupuri

Cerere

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

Răspuns

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

Recuperare detalii despre un grup prin ID-ul său unic

Cerere

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

Răspuns

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

Gestionarea eroare

Răspunsurile sunt formatate respectând RFC-7644 secțiunea 3.12(fereastră nouă), fiind furnizate cu un cod de stare HTTP care indică natura eroare și un corp de răspuns care oferă mai multe detalii.

Răspuns eroare

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

Cele mai frecvente eroare

  • 400 Bad Request: Cererea a fost nevalidă sau nu poate fi onorată din alte motive.
  • 404 Not Found: Resursa solicitată nu a putut fi găsită.
  • 409 Conflict: Solicitarea nu a putut fi finalizată din cauza unui conflict cu starea actuală a resursei țintă.
    • uniqueness: O Valoare de atribut unică există deja în Sistem.
  • 500 Internal Server Error: A apărut o eroare pe partea de server.