Saltar al contenido

Los dos llaveros de macOS

El llavero clásico y el moderno con protección de datos: qué cambia entre ellos, cuál usa tu librería, y por qué el moderno es el que se sincroniza y el que respeta el aislamiento.

Qué los separa

La fila más práctica es la tercera. Si tu aplicación se distribuye por la tienda de Apple —y por tanto está aislada—, el sistema que corresponde es el moderno, y usar la ruta clásica da comportamientos raros que se manifiestan como fallos intermitentes.

Cuál usa tu código

En una aplicación de Tauri normal, con una librería de llavero, el clásico — porque es lo que usan las API tradicionales y es lo que una aplicación fuera de la tienda tiene por omisión.

Para pedir el moderno hace falta indicarlo explícitamente en las opciones de la llamada al sistema, y algunas librerías lo exponen con una opción o una variante de la entrada. Merece comprobarlo en la tuya en lugar de suponerlo.

Y hay una consecuencia que sorprende: los dos sistemas no ven los mismos elementos. Un secreto guardado por la ruta clásica no aparece buscándolo por la moderna. Si tu aplicación cambia de una a otra —porque pasas a la tienda, o porque activas el aislamiento— los secretos anteriores no están, aunque sigan en el disco. Es una migración como la del nivel 35.3, con la misma forma: leer con la vieja, escribir con la nueva.

La sincronización, que es una decisión de producto

El llavero moderno puede marcar un elemento como sincronizable, y entonces viaja entre las máquinas del mismo usuario. Es tentador y no siempre es lo correcto:

La segunda columna es más frecuente de lo que parece. Un testigo de sesión suele identificar una instalación, no a una persona, y hacerlo viajar convierte dos dispositivos en uno para tu servidor.

Qué pasa cuando la elección no es tuya

Tres situaciones donde el sistema decide:

  • Aplicación aislada — moderno, sin discusión.
  • Distribución por la tienda — implica lo anterior.
  • Procesos sin sesión de usuario — ninguno de los dos está disponible con normalidad. Es el equivalente en macOS del problema que el nivel 37 trata en Linux, y aparece en herramientas que corren en máquinas de integración continua.