Página de inicio de Proton

API de aprovisionamiento SCIM

Lectura
4 min
Categoría
Proton VPN for Business

Descripción general

La API de aprovisionamiento SCIM (System for Cross-domain Identity Management) es un protocolo estándar para automatizar el aprovisionamiento y la administración de identidades de usuario en aplicaciones basadas en la nube. Proton ofrece soporte para esta API, lo que te permite crear, actualizar, eliminar y administrar cuentas de usuario y grupos. La API se basa en la especificación SCIM 2.0, que proporciona un esquema de usuario común y una interfaz de API RESTful para facilitar la integración.

Proton soporta los siguientes proveedores de identidad:

La URL base para todas las llamadas del proveedor de identidad es: https://scim.proton.me/{tenentId}/v2/(ventana nueva). Todos los métodos SCIM son ramas de esta URL base.

Autenticación

El token debe incluirse en un encabezado Authorization con un tipo Bearer al llamar a cualquiera de los métodos SCIM. Este token se puede generar y reemplazar en la sección Single-sign-on > SCIM automatic provisioning. Haga clic en el botón “Generar un token” y copie el token generado.

Por ejemplo:

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

Usuarios

Atributos principales

idUn identificador único para un recurso SCIM, como un usuario, que es definido por Proton.
nombre de usuario (obligatorio)Un identificador único para el usuario. Aquí utilizamos el correo electrónico como nombre de usuario.
activoUn booleano que indica si el usuario está activo. El valor por defecto es true.

Operaciones

Recuperar una lista paginada de todos los usuarios

Solicitud

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

Respuesta

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

Crear un nuevo usuario

Solicitud

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

Respuesta

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

Recuperar un solo usuario

Solicitud

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

Respuesta

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

Eliminar un usuario

Solicitud

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

Grupos

Atributos principales

idUn identificador único para un recurso SCIM, como un usuario, que es definido por Proton.
displayNameNombre para el grupo.
miembrosUna Lista de miembros del grupo.

Operaciones

Obtener Lista de Grupos

Solicitud

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

Respuesta

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

Recuperar los Detalles de un grupo mediante su ID único

Solicitud

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

Respuesta

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

Gestión de error

Las respuestas se formatean siguiendo RFC-7644 sección 3.12(ventana nueva), las cuales se entregan con un código de Estado HTTP que indica la naturaleza del error y un cuerpo de respuesta que proporciona más detalles.

Respuesta de error

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

Los errores Más comunes

  • 400 Solicitud incorrecta: La solicitud no era válida o no puede ser procesada de otro modo.
  • 404 No encontrado: El recurso solicitado no se pudo Buscar.
  • 409 Conflict: La solicitud no pudo completarse debido a un conflicto con el estado actual del recurso de destino.
    • uniqueness: Un Valor de atributo único ya existe en el Sistema.
  • 500 Internal Server Error: Ocurrió un error en el lado del servidor.