English
Volver al inicio

Caso de uso · Autenticación

Inicio de sesión con Almena

Un flujo estilo OAuth que permite a cualquier aplicación autenticar a sus usuarios con Almena. El usuario escanea un QR con la Almena Wallet, elige un nodo público y aprueba desde el móvil. Sin contraseñas, sin proveedor de identidad central y la aplicación nunca ve las claves del usuario.

Qué resuelve

Hoy la mayoría de las apps o construyen su propio sistema de contraseñas — con el riesgo de filtraciones que eso implica — o delegan el login en un único proveedor de identidad corporativo. Las dos opciones ponen el control de millones de cuentas en una sola parte. Con Almena, el usuario tiene su DID y sus credenciales en la Wallet; la aplicación solo recibe una prueba verificable de autenticación firmada por el usuario, no sus secretos.

Lo que ve el usuario

  1. 1. La aplicación integrada

    Una aplicación — web, escritorio o móvil — incluye un botón 'Iniciar sesión con Almena' junto al resto de opciones de login.

  2. 2. QR con selector de nodo público

    Al pulsar el botón se abre una pantalla con un QR y un selector con nodos Almena públicos. El usuario puede cambiar de nodo; el QR se regenera para el nodo elegido.

  3. 3. Escaneo desde la Wallet

    Desde el móvil, el usuario escanea el QR con la Almena Wallet. La wallet muestra qué aplicación está pidiendo acceso y qué va a saber sobre él.

  4. 4. Aprobación biométrica

    El usuario aprueba con Face ID, Touch ID o el PIN del dispositivo. La wallet firma el reto de autenticación con la clave de su DID (post-cuántico, ML-DSA-87). Si el usuario pulsa Rechazar, la wallet envía una cancelación firmada al nodo y la aplicación integrada muestra inmediatamente un mensaje de 'Login rechazado' — sin esperar a que el QR caduque.

  5. 5. Sesión iniciada

    El nodo público elegido resuelve el documento DID del usuario en la malla Almena, verifica la firma contra la clave pública declarada en ese documento, y la aplicación integrada — que está poleando el resultado — recibe el DID del usuario y emite su propio token de sesión. La pantalla de login se convierte en la pantalla autenticada de la app.

Diagrama de flujo

Camino feliz entre la aplicación integrada, la wallet del usuario y el nodo público elegido. Si el usuario rechaza en la wallet, el nodo marca el reto como 'rechazado' y el siguiente sondeo de la app lo refleja — mismo camino, terminal en el paso 9.

Diagrama de flujo Diagrama de secuencia: la app integrada solicita un reto de autenticación a un nodo público, muestra un QR; la wallet escanea el QR, el usuario aprueba o rechaza, la wallet firma la respuesta (o una cancelación) y la envía al nodo, que la verifica contra el documento DID en la malla Almena; la app sondea y al aprobarse genera su propio token de sesión. App integrada Nodo público Almena Wallet Red Almena 1. El usuario pulsa 'Iniciar sesión con Almena' 2. Solicitar reto de autenticación 3. Id de sesión + reto 4. Mostrar QR + selector de nodo 5. Escanear QR 6. Mostrar app + permisos · aprobación biométrica 7. Firmar reto (ML-DSA-87) 8. Resolver documento DID en la malla 9. Verificar firma con clave publicada 10. La app sondea · recibe DID + emite token 11. Usuario autenticado

Diagrama de elementos

Las piezas implicadas y cómo se relacionan. Los nodos públicos son intercambiables: la wallet habla con el que el usuario eligió en la pantalla del QR.

Diagrama de elementos Diagrama de arquitectura: a la izquierda la app integrada con la pantalla de QR y el selector de nodo; a la derecha la wallet del usuario que escanea el QR y firma el reto; en el medio un nodo público media el intercambio y resuelve el documento DID del usuario en la malla Almena. App integrada QR + selector de nodo Red Almena Nodo público did:almena:… Almena Wallet Reto Resultado Prueba firmada Escanear QR Resolver DID
  • App integrada Incluye el botón de login. Muestra el QR y el selector de nodo. Recibe el resultado de la autenticación.
  • QR + selector de nodo Codifica la sesión, el reto y la URL del nodo público elegido.
  • Almena Wallet Guarda el DID y la clave privada del usuario. Escanea el QR, pide biometría y firma el reto.
  • Nodo público Media el intercambio. Verifica la firma contra el documento DID.
  • Red Almena Malla P2P de nodos que mantienen los documentos DID sincronizados. Cualquier nodo devuelve el mismo documento.

Notas de seguridad

  • La aplicación nunca recibe la clave privada del usuario — solo una firma verificable sobre el reto.
  • Las firmas usan primitivas post-cuánticas (ML-DSA-87, NIST FIPS 204) y la clave verificadora se lee del documento DID publicado en la malla Almena — no solo del literal del DID. Aunque un nodo malicioso intentase servir un documento manipulado, el daemon hace cross-check contra la clave codificada en el propio identificador DID y rechaza cualquier discrepancia.
  • El usuario elige qué nodo público media el intercambio. El nodo no guarda secretos a largo plazo: toda autenticación está ligada criptográficamente al DID del usuario, no al nodo.
  • El reto es de un solo uso y corta duración (60 s por defecto, máximo 300 s). El nodo y la wallet rechazan los replays; una segunda prueba para el mismo id devuelve 409 Conflict.
  • Si el usuario aún no ha publicado su documento DID, el nodo rechaza la prueba con un error claro en lugar de confiar silenciosamente en el literal del DID — el login exige una identidad publicada y resoluble en la red.
  • El rechazo en la wallet también está autenticado: la wallet envía el nonce del QR para que el nodo confirme que quien rechaza realmente escaneó el código antes de cerrar el reto. El UI del integrador muestra el rechazo en su siguiente sondeo, sin esperar al timeout.