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:
- Okta (https://www.okta.com/(fereastră nouă))
- Microsoft Entra ID
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ă
| id | Un 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. |
| activ | O 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ă
| id | Un identificator unic pentru o resursă SCIM, cum ar fi un utilizator, care este definit de Proton. |
| displayName | Nume pentru grup. |
| membri | O 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.