API descripción general
Passwork API proporciona una interfaz programática para interactuar con el servicio de administración de contraseñas Passwork. El API permite automatizar operaciones con contraseñas, bóvedas, usuarios y otros objetos del sistema, proporcionando control programático total sobre todos los aspectos del trabajo con Passwork.
Nuestro API ofrece las siguientes capacidades:
- Gestión de contraseñas: crear, recuperar, actualizar y eliminar contraseñas;
- Gestión de bóvedas: creación de nuevas bóvedas, gestión del acceso;
- Gestión de carpetas: creación de estructuras de carpetas dentro de bóvedas;
- Gestión de usuarios: creación de usuarios, configuración de derechos de acceso;
- Gestión de grupos de usuarios: agrupar usuarios para simplificar la gestión de acceso;
- Acceso compartido a contraseñas: otorgar a otros usuarios acceso a contraseñas a través del mecanismo de la Bandeja de entrada;
- Creación de enlaces públicos: acceso temporal a contraseñas mediante enlaces;
- Soporte para archivos adjuntos: trabajar con archivos adjuntos a contraseñas;
- Búsqueda y filtrado: búsqueda de contraseñas según varios criterios;
- Gestión de accesos directos: creación de enlaces a contraseñas en otras bóvedas;
- Gestión de basura: restaurar objetos eliminados;
- Registro de actividad: recuperar información sobre las acciones del usuario.
Al instalar Passwork, el archivo .zip también incluye Api reference.pdf, que contiene descripciones detalladas de todos los puntos finales API disponibles:
- Docker
- Windows Server
- Linux
/<passwork>/www/latest/files/api-schema/Api reference.pdf
C:\inetpub\wwwroot\passwork\files\api-schema\Api reference.pdf
/var/www/files/api-schema/Api reference.pdf
Cifrado del lado del cliente
Una de las características clave de Passwork API es la compatibilidad con el cifrado del lado del cliente. Cuando se utiliza el cifrado del lado del cliente, todos los datos de importancia crítica (contraseñas, campos confidenciales, archivos adjuntos) se cifran en el lado del cliente antes de enviarlos al servidor.
Principio de criptografía
- Contraseña maestra: el cifrado utiliza una contraseña maestra que solo el usuario conoce. La contraseña maestra nunca se envía al servidor;
- Clave maestra: Según la contraseña maestra, se genera una clave maestra usando PBKDF2 (Función 2 de derivación de clave basada en contraseña);
- Hash de clave maestra: un hash de la clave maestra se calcula utilizando SHA-256. Este hash se envía al servidor para autenticar al cliente;
- Claves de bóveda: se genera una clave única para cada bóveda, que se utiliza para cifrar contraseñas y otros datos en esa bóveda;
- Cifrado asimétrico: Para el intercambio de claves entre usuarios, se utiliza cifrado asimétrico (RSA). Cada usuario tiene un par de claves: pública y privada;
- Cifrado de datos: el cifrado AES simétrico en modo CBC con relleno PKCS7 se utiliza para cifrar contraseñas y otros datos confidenciales.
API responsabilidad del cliente
Importante: De acuerdo con la arquitectura Zero Knowledge, Passwork API asume que las operaciones criptográficas se realizan en el lado del cliente. Esto significa que el cifrado y descifrado de datos se debe realizar en la aplicación cliente antes de enviarlos al servidor. El servidor Passwork trabaja con datos ya cifrados y además aplica su propia capa de cifrado, creando protección multicapa.
El cliente API debe garantizar:
- Generación y almacenamiento de la clave maestra en base a la contraseña maestra;
- Cifrado de datos antes de enviarlos al servidor;
- Descifrado de datos recibidos del servidor;
- Cálculo del hash de la clave maestra para autorización;
- Cifrado asimétrico de claves al intercambiar con otros usuarios.
Conector de pitón
Para simplificar el trabajo con API e implementar todas las operaciones criptográficas necesarias, Passwork proporciona un [conector Python] oficial (/api-and-integrations/python-connector). El conector encapsula toda la complejidad de trabajar con criptografía y API en una interfaz programática simple.
El conector Python proporciona:
- Gestión de sesiones y autorizaciones;
- Renovación automática de sesión mediante refreshToken;
- Operaciones criptográficas (cifrado/descifrado);
- Métodos listos para usar para las operaciones principales API;
- Un método
call()universal para solicitudes API arbitrarias.
Autorización y manejo de sesión.
Autorización
El proceso de autorización es el siguiente:
- El usuario Passwork en la pestaña Autorización y 2FA en la sección tokens __DNT22 hace clic en Generar par;
- El servidor devuelve un par de tokens:
accessTokenyrefreshToken; - El usuario utiliza
accessTokenpara todas las solicitudes posteriores y lo agrega al encabezadoAuthorization: Bearer {accessToken}; - Si el cifrado del lado del cliente está habilitado, el usuario también recibe
Passwork-MasterKeyHashy lo agrega al encabezado.
Manejo de sesiones y refrescoToken
Passwork API utiliza tokens de acceso con validez limitada:
- Token de acceso: El token principal para autorizar solicitudes. Tiene una vida útil limitada (normalmente minutos u horas);
- Token de actualización: un token de larga duración que se utiliza para obtener un nuevo token de acceso sin volver a autenticarse;
- Renovación del token: cuando el token de acceso caduca, el cliente recibe un error 401 con el código
accessTokenExpired. Normalmente, el cliente llama aPOST /api/v1/sessions/refreshconAuthorization: Bearery un cuerpo JSON que contienerefreshTokenpara obtener un nuevo par. Para sesiones DNT27 (incluidas las cuentas de servicio), las rutas adicionales solo pueden renovar el acceso o solo actualizar; consulte API rotación de tokens; - Renovación automática: el conector Python maneja automáticamente la caducidad del token y realiza la renovación sin intervención del usuario;
- Guardar sesión: el conector Python permite guardar y restaurar sesiones, lo que resulta conveniente para la automatización a largo plazo. Las sesiones guardadas están cifradas por seguridad.
API formato de respuesta
El encabezado de solicitud X-Response-Format especifica el formato de la respuesta del API:
- base64 — la respuesta del servidor se devuelve en codificación Base64 (valor predeterminado);
- sin formato: la respuesta se devuelve en formato JSON.
Agregue el encabezado X-Response-Format: raw a la solicitud para recibir la respuesta en JSON. Para una respuesta base64, use X-Response-Format: base64 u omita el encabezado.
Recomendaciones de seguridad
Al utilizar Passwork API, se deben observar las siguientes recomendaciones de seguridad:
- Proteja las claves API: almacene las claves API de forma segura, utilice variables de entorno o almacenes secretos seguros;
- Rotación de claves: actualice periódicamente las claves API para minimizar los riesgos;
- HTTPS: Utilice únicamente HTTPS para todas las comunicaciones API;
- Mínimo privilegio: cree usuarios API separados con derechos de acceso mínimos necesarios;
- Proteger la contraseña maestra: almacene la contraseña maestra con la máxima protección, ya que el compromiso de la contraseña maestra conlleva el compromiso de todas las contraseñas;
- Proteger sesiones guardadas: garantice una protección confiable de las sesiones guardadas y las claves de cifrado;
- Manejo de errores: maneje con cuidado los errores API, evitando la divulgación de información confidencial en los registros.
API puntos finales y capacidades
Bóvedas
- Crear bóveda:
POST /api/v1/vaults - Obtener lista de bóvedas:
GET /api/v1/vaults - Obtener información de la bóveda:
GET /api/v1/vaults/{id} - Actualizar bóveda:
POST /api/v1/vaults/{id} - Eliminar bóveda:
DELETE /api/v1/vaults/{id} - Administrar el acceso de los usuarios:
POST /api/v1/vaults/{id}/grant-user-accessPOST /api/v1/vaults/{id}/revoke-user-access
- Administrar acceso al grupo:
POST /api/v1/vaults/{id}/grant-user-group-accessPOST /api/v1/vaults/{id}/revoke-user-group-access
- Importar bóvedas:
POST /api/v1/vaults/import
Carpetas
- Crear carpeta:
POST /api/v1/folders - Obtener lista de carpetas:
GET /api/v1/folders - Obtener información de la carpeta:
GET /api/v1/folders/{id} - Carpeta de actualización:
POST /api/v1/folders/{id} - Eliminar carpeta:
DELETE /api/v1/folders/{id} - Copiar carpeta:
POST /api/v1/folders/{id}/copy - Mover carpeta:
POST /api/v1/folders/{id}/move - Administrar acceso:
POST /api/v1/folders/{id}/grant-user-accessPOST /api/v1/folders/{id}/revoke-user-access
- Importar/exportar carpetas:
POST /api/v1/folders/importPOST /api/v1/directories/export
Elementos/Contraseñas
- Crear contraseña:
POST /api/v1/items - Obtener lista de contraseñas:
GET /api/v1/items - Obtener información de contraseña:
GET /api/v1/items/{id} - Actualizar contraseña:
PATCH /api/v1/items/{id} - Eliminar contraseña:
DELETE /api/v1/items/{id} - Copiar contraseña:
POST /api/v1/items/{id}/copy - Mover contraseña:
POST /api/v1/items/{id}/move - Obtener archivos adjuntos:
GET /api/v1/items/{id}/attachment/{attachmentId} - Operaciones masivas:
POST /api/v1/items/copy/bulkPOST /api/v1/items/move/bulkPOST /api/v1/items/delete/bulk
- Importar/exportar contraseñas:
POST /api/v1/items/importPOST /api/v1/items/export
- Buscar contraseñas:
GET /api/v1/items/search - Análisis de seguridad:
GET /api/v1/items/security-analysis
Usuarios
- Crear usuario:
POST /api/v1/users - Obtener lista de usuarios:
GET /api/v1/users - Obtener información de usuario:
GET /api/v1/users/{id} - Actualizar usuario:
PATCH /api/v1/users/{id} - Eliminar usuario:
DELETE /api/v1/users/{id} - Bloquear/desbloquear usuario:
POST /api/v1/users/{id}/blockPOST /api/v1/users/{id}/unblock
- Autenticación de dos factores:
POST /api/v1/users/2fa/set-upPOST /api/v1/users/2fa/set-statePOST /api/v1/users/2fa/reset
Grupos de usuarios
- Crear grupo:
POST /api/v1/user-groups - Obtener lista de grupos:
GET /api/v1/user-groups - Obtener información del grupo:
GET /api/v1/user-groups/{id} - Grupo de actualización:
POST /api/v1/user-groups/{id} - Eliminar grupo:
DELETE /api/v1/user-groups/{id} - Administrar miembros del grupo:
POST /api/v1/user-groups/{id}/add-usersPOST /api/v1/user-groups/{id}/remove-users
- Operaciones grupales masivas:
POST /api/v1/user-groups/delete/bulkPOST /api/v1/user-groups/set-state/bulk
Roles de usuario
- Crear rol:
POST /api/v1/user-roles - Obtener lista de roles:
GET /api/v1/user-roles - Obtener información del rol:
GET /api/v1/user-roles/{id} - Actualizar rol:
PATCH /api/v1/user-roles/{id} - Eliminar rol:
DELETE /api/v1/user-roles/{id} - Administrar permisos:
GET /api/v1/user-roles/permission-items/list
Acceso compartido (elementos de la bandeja de entrada)
- Enviar contraseña al usuario:
POST /api/v1/inbox-items/send-to-user - Enviar contraseña al grupo de usuarios:
POST /api/v1/inbox-items/send-to-user-group - Obtener lista de contraseñas de la bandeja de entrada:
GET /api/v1/inbox-items - Buscar contraseña en la bandeja de entrada:
GET /api/v1/inbox-items/search - Obtener contraseña de bandeja de entrada:
GET /api/v1/inbox-items/{id} - Establecer tipo de acceso:
POST /api/v1/inbox-items/{id}/set-access - Eliminación masiva:
POST /api/v1/inbox-items/delete/bulk
Enlaces públicos
- Crear enlace:
POST /api/v1/links - Obtener lista de enlaces:
GET /api/v1/links/folder/{folderId}GET /api/v1/links/item/{itemId}GET /api/v1/links/vault/{vaultId}
- Eliminar enlace:
DELETE /api/v1/links/{id} - Eliminación masiva:
POST /api/v1/links/delete/bulk
Papelera (artículos del contenedor)
- Obtener lista de artículos basura:
GET /api/v1/bin-items - Obtener artículo de basura:
GET /api/v1/bin-items/{id}/folderGET /api/v1/bin-items/{id}/itemGET /api/v1/bin-items/{id}/shortcut
- Restaurar elementos:
POST /api/v1/bin-items/restore/bulkPOST /api/v1/bin-items/restore-and-move/bulk
- Eliminar elementos:
DELETE /api/v1/bin-items/{id}POST /api/v1/bin-items/delete/bulkDELETE /api/v1/bin-items/all
Atajos
- Crear acceso directo:
POST /api/v1/shortcuts - Obtener lista de atajos:
GET /api/v1/shortcuts - Obtener información de acceso directo:
GET /api/v1/shortcuts/{id} - Copiar acceso directo:
POST /api/v1/shortcuts/{id}/copy - Mover acceso directo:
POST /api/v1/shortcuts/move/bulk - Eliminar acceso directo:
DELETE /api/v1/shortcuts/{id} - Operaciones masivas:
POST /api/v1/shortcuts/create/bulkPOST /api/v1/shortcuts/copy/bulkPOST /api/v1/shortcuts/move/bulkPOST /api/v1/shortcuts/delete/bulk
Registro de actividad
- Obtener registros:
GET /api/v1/activity-logs - Obtener información del evento:
GET /api/v1/activity-logs/{id} - Obtener actividades recientes de los usuarios:
GET /api/v1/activity-logs/directories/last-users-activities
- Obtener actividad reciente de un usuario:
GET /api/v1/activity-logs/user/latest
Sesiones
- Obtener información de la sesión actual:
GET /api/v1/sessions/current/info - Obtener lista de sesiones:
GET /api/v1/sessions - Eliminar sesión:
DELETE /api/v1/sessions/{id} - Renovar el par de tokens completo:
POST /api/v1/sessions/refresh - Solo renovar acceso (sesiones API):
POST /api/v1/sessions/refresh-access-token - Renovar solo actualización (sesiones API):
POST /api/v1/sessions/refresh-refresh-token - Los tres flujos, ejemplos de
curly restricciones: API rotación de token
Ajustes
- Obtener/actualizar configuración:
-
Contraseñas:
GET/PATCH /api/v1/settings/auth-password-complexity -
Contraseñas maestras:
GET/PATCH /api/v1/settings/master-password-complexity -
Interfaz:
GET/PATCH /api/v1/settings/interface -
Sesiones:
GET/PATCH /api/v1/settings/session -
Notificaciones:
GET/PATCH /api/v1/settings/notifications -
Registros de actividad:
GET/PATCH /api/v1/settings/activity-log -
Buscar:
GET/PATCH /api/v1/settings/search -
Bóvedas:
GET/PATCH /api/v1/settings/vault -
Usuarios:
GET/PATCH /api/v1/settings/user
-
invitaciones de usuario
- Crear invitación:
POST /api/v1/user-invites - Obtener lista de invitaciones:
GET /api/v1/user-invites - Obtener información de invitación:
GET /api/v1/user-invites/{id} - Eliminar invitación:
DELETE /api/v1/user-invites/{id} - Crear y enviar invitación:
POST /api/v1/user-invites/create-and-send