Saltar al contenido principal

Detalles técnicos

Descripción general

El acceso offline en Passwork es una caché local de elementos individuales, no una copia completa de la(s) bóveda(s). Se crea tras la autenticación y la sincronización con el servidor.

Cómo funciona:

  • Passwork mantiene una lista de elementos seleccionados añadidos al acceso offline.
  • La aplicación de escritorio recibe esta lista a través de la API.
  • Los elementos seleccionados se guardan localmente.
  • La contraseña y los campos personalizados del elemento se cifran con una clave local independiente antes del almacenamiento.
  • Si se pierde la conexión con el servidor, la aplicación usa la caché local.
  • Cuando se restablece la conexión, la aplicación envía los eventos acumulados y actualiza los datos locales.

Ventana que se muestra cuando el servidor no está disponible

Durante la ejecución, la aplicación de escritorio supervisa por separado el estado de la red y la disponibilidad del servidor Passwork. La pérdida de conexión a Internet, una VPN no disponible, un tiempo de espera de solicitud API u otro error de transporte no cambia automáticamente la aplicación al modo offline. Primero, la aplicación envía una solicitud de control al servidor para descartar un fallo temporal.

Si el servidor sigue sin estar disponible, se abre la ventana Error de conexión. Muestra la dirección del host actual y una lista de causas técnicas que comprobar. La ventana no se puede cerrar haciendo clic en el fondo. El usuario debe elegir explícitamente la siguiente acción.

En la ventana están disponibles las siguientes acciones:

  • Conectar — vuelve a enviar la solicitud de control al servidor. Si el servidor responde correctamente, la aplicación cierra la ventana y continúa la sesión online.
  • Modo offline — disponible solo para usuarios a los que se les permite usar el acceso offline. La aplicación cierra la ventana, cambia la interfaz al modo offline y deja de enviar solicitudes al servidor hasta la reconexión.
  • Cerrar sesión — realiza un cierre de sesión local sin contactar con el servidor. La aplicación cancela las solicitudes activas, borra la sesión local y devuelve al usuario a la pantalla de inicio de sesión.

Tras cambiar al modo offline, el panel superior indica que el servidor no está disponible y muestra un botón de reconexión. Este botón vuelve a comprobar la disponibilidad del servidor, actualiza la sesión y solo tras una respuesta correcta devuelve la aplicación al modo online.

info

Un arranque en frío sin conexión de red se gestiona por separado: si el acceso offline se activó de antemano, la aplicación restaura los datos de autenticación guardados desde el almacenamiento local y abre la interfaz offline sin mostrar esta ventana.

Dónde se almacena la caché

Los datos offline se almacenan en el mismo archivo de base de datos local que otros datos de servicio de Passwork:

  • Windows%APPDATA%\@passwork\app\app-data.db;
  • macOS~/Library/Application Support/@passwork/app/app-data.db;
  • Linux~/.config/@passwork/app/app-data.db (o la ruta de XDG_CONFIG_HOME).

Cómo se cifran los datos

El acceso offline usa dos niveles de protección.

Cifrado de elementos locales

Los valores confidenciales en app-data.db se guardan mediante safeStorage. Se trata de un wrapper sobre el almacenamiento secreto del sistema operativo:

  • Windows — DPAPI / Credential Manager vinculado a la cuenta de usuario;
  • macOS — Keychain;
  • Linux — Secret Service compatible (GNOME Keyring, KWallet, etc.).

Las claves de cifrado las gestiona el sistema operativo y no se almacenan en los archivos de la aplicación. En app-data.db solo se escriben valores base64 cifrados.

Cifrado de campos del elemento

Antes de guardar cada elemento, la aplicación cifra además su parte secreta: el valor de la contraseña y los campos personalizados.

Para la caché offline local, la aplicación genera una clave AES-256 independiente y la almacena en safeStorage. A continuación, la parte secreta del elemento se cifra con AES-GCM y se guarda dentro de la copia local.

Qué se guarda

Para cada elemento sincronizado:

  • identificadores del elemento y de las entidades relacionadas;
  • nombre;
  • login;
  • URLs;
  • etiquetas;
  • nota;
  • color;
  • directorio;
  • valor cifrado de la contraseña;
  • campos personalizados cifrados.

La contraseña y los campos personalizados se cifran con una capa AES-256 adicional. El resto de datos se almacena como metadatos de la copia local y se protege mediante safeStorage.

Qué no se guarda

La caché local no es una copia completa de todos los datos relacionados con un elemento. No se guardan:

  • Archivos adjuntos;
  • Ediciones del elemento;
  • Historial de acciones del elemento;
  • Estructura de bóvedas y carpetas;
  • Iconos del elemento.

Estados de la copia local

Un elemento offline tiene un estado que determina si se puede abrir sin conexión de red:

EstadoSignificado
synchronizedEl elemento está guardado localmente y disponible para visualización.
not_synchronizedEl elemento está en la lista offline, pero la copia local no se sincronizó.
revokedEl acceso al elemento se revocó en el servidor.
exceededEl elemento supera el límite de cantidad del rol.
outdatedLa copia local está desactualizada según la regla retentionHours.
aviso

Los estados no se muestran en la aplicación: son lógica interna usada al trabajar con elementos offline.

El estado outdated se calcula localmente: la aplicación compara la hora actual con la última sincronización y el momento en que se añadió el elemento. Si ha expirado el período de acceso offline sin sincronización, el elemento se considera desactualizado.

Sincronización

La sincronización se ejecuta solo cuando la aplicación está online.

Cuando se activa el modo offline por primera vez:

  1. La aplicación guarda el indicador de modo offline activado.
  2. Recibe del servidor la lista de elementos añadidos al acceso offline.
  3. Envía al servidor la lista de versiones locales actuales.
  4. Recibe los elementos modificados y la lista de elementos no disponibles.
  5. Actualiza la caché local de elementos y la lista de la sección offline.
  6. Guarda la hora de la sincronización correcta.

Cuando se restablece la red:

  • la aplicación vuelve a ejecutar la sincronización;
  • envía los eventos acumulados;
  • actualiza las copias locales de los elementos.

Si un elemento se eliminó del acceso offline o dejó de estar disponible, la aplicación elimina su copia local en la siguiente sincronización.

Limitaciones y acceso

El acceso offline depende de la siguiente configuración del rol:

  • Guardar contraseñas offline
  • Limitar contraseñas offline por dispositivo
  • Limitar la duración del acceso offline sin sincronización (en horas)

Si un administrador revoca el acceso a un elemento o cambia los permisos del usuario, la aplicación solo se entera en la siguiente conexión al servidor y sincronización. Hasta que se restablezca la conexión, permanece disponible la última versión del elemento en caché local.