Saltar al contenido principal

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:

/<passwork>/www/latest/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

  1. 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;
  2. 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);
  3. 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;
  4. 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;
  5. 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;
  6. 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

peligro

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:

  1. El usuario Passwork en la pestaña Autorización y 2FA en la sección tokens __DNT22 hace clic en Generar par;
  2. El servidor devuelve un par de tokens: accessToken y refreshToken;
  3. El usuario utiliza accessToken para todas las solicitudes posteriores y lo agrega al encabezado Authorization: Bearer {accessToken};
  4. Si el cifrado del lado del cliente está habilitado, el usuario también recibe Passwork-MasterKeyHash y lo agrega al encabezado.

Manejo de sesiones y refrescoToken

Passwork API utiliza tokens de acceso con validez limitada:

  1. Token de acceso: El token principal para autorizar solicitudes. Tiene una vida útil limitada (normalmente minutos u horas);
  2. Token de actualización: un token de larga duración que se utiliza para obtener un nuevo token de acceso sin volver a autenticarse;
  3. 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 a POST /api/v1/sessions/refresh con Authorization: Bearer y un cuerpo JSON que contiene refreshToken para 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;
  4. Renovación automática: el conector Python maneja automáticamente la caducidad del token y realiza la renovación sin intervención del usuario;
  5. 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:

  1. Proteja las claves API: almacene las claves API de forma segura, utilice variables de entorno o almacenes secretos seguros;
  2. Rotación de claves: actualice periódicamente las claves API para minimizar los riesgos;
  3. HTTPS: Utilice únicamente HTTPS para todas las comunicaciones API;
  4. Mínimo privilegio: cree usuarios API separados con derechos de acceso mínimos necesarios;
  5. 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;
  6. Proteger sesiones guardadas: garantice una protección confiable de las sesiones guardadas y las claves de cifrado;
  7. 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-access
    • POST /api/v1/vaults/{id}/revoke-user-access
  • Administrar acceso al grupo:
    • POST /api/v1/vaults/{id}/grant-user-group-access
    • POST /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-access
    • POST /api/v1/folders/{id}/revoke-user-access
  • Importar/exportar carpetas:
    • POST /api/v1/folders/import
    • POST /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/bulk
    • POST /api/v1/items/move/bulk
    • POST /api/v1/items/delete/bulk
  • Importar/exportar contraseñas:
    • POST /api/v1/items/import
    • POST /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}/block
    • POST /api/v1/users/{id}/unblock
  • Autenticación de dos factores:
    • POST /api/v1/users/2fa/set-up
    • POST /api/v1/users/2fa/set-state
    • POST /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-users
    • POST /api/v1/user-groups/{id}/remove-users
  • Operaciones grupales masivas:
    • POST /api/v1/user-groups/delete/bulk
    • POST /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}/folder
    • GET /api/v1/bin-items/{id}/item
    • GET /api/v1/bin-items/{id}/shortcut
  • Restaurar elementos:
    • POST /api/v1/bin-items/restore/bulk
    • POST /api/v1/bin-items/restore-and-move/bulk
  • Eliminar elementos:
    • DELETE /api/v1/bin-items/{id}
    • POST /api/v1/bin-items/delete/bulk
    • DELETE /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/bulk
    • POST /api/v1/shortcuts/copy/bulk
    • POST /api/v1/shortcuts/move/bulk
    • POST /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 curl y 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