Caronte

Servidor de licencias

RustAxumgRPCPostgreSQLNext.js 16Ed25519

Caronte es el servidor de licencias que gobierna la activación de los productos del ecosistema. Genera y valida claves, controla cuántos dispositivos puede activar cada licencia y qué funcionalidades habilita, y resuelve el caso incómodo de todo sistema de licencias: validar sin conexión. Lo hace emitiendo tokens firmados con Ed25519 y una caducidad configurable, de modo que un cliente sin red siga funcionando durante una ventana acotada sin que eso abra la puerta a usarlo indefinidamente.

Qué hace

Es la pieza que decide si un producto puede arrancar, y tiene que dar esa respuesta tanto con red como sin ella.

  • Genera claves de licencia con un formato propio y controla su ciclo de vida.
  • Soporta licencias perpetuas, por suscripción y de prueba.
  • Limita por asientos cuántos dispositivos pueden activar una misma licencia.
  • Habilita o deshabilita funcionalidades concretas por licencia mediante entitlements.
  • Valida en línea o fuera de línea con tokens firmados en Ed25519 y caducidad configurable.
  • Expone la validación por REST y por gRPC, para que cada producto use el protocolo que le conviene.
  • Registra en auditoría toda operación sobre licencias y avisa por correo de caducidades y activaciones.

Arquitectura

Se descompone en servicios pequeños detrás de un gateway, con la criptografía elegida para que la validación offline no dependa de compartir un secreto.

  • Gateway de API en Rust sobre Axum como único punto de entrada.
  • Servicios separados de licencias, validación y notificaciones, cada uno con su responsabilidad acotada.
  • Doble protocolo en el servicio de validación: REST para integraciones sencillas y gRPC para las que necesitan latencia baja.
  • Firma asimétrica Ed25519 para los tokens offline: el cliente verifica con la clave pública y nunca custodia un secreto capaz de emitir licencias.
  • Contraseñas con Argon2id y claves de API almacenadas como SHA-256.
  • PostgreSQL 16 como almacén, accedido con SQLx y consultas verificadas en compilación.
  • Dashboard de administración en Next.js y despliegue completo con Docker Compose en un solo comando.

Stack

Servicios en Rust sobre Axum para la parte REST y tonic para gRPC, con SQLx contra PostgreSQL 16. La criptografía combina Ed25519 para los tokens offline, Argon2id para contraseñas y SHA-256 para claves de API. El panel de administración es Next.js 16 con TypeScript y Tailwind, y todo el conjunto se levanta con Docker Compose, con integración continua en GitHub Actions y Jenkins.

Volver a proyectos