Caronte

Servidor de llicències

RustAxumgRPCPostgreSQLNext.js 16Ed25519

Caronte és el servidor de llicències que governa l’activació dels productes de l’ecosistema. Genera i valida claus, controla quants dispositius pot activar cada llicència i quines funcionalitats habilita, i resol el cas incòmode de tot sistema de llicències: validar sense connexió. Ho fa emetent tokens signats amb Ed25519 i una caducitat configurable, de manera que un client sense xarxa segueixi funcionant durant una finestra acotada sense que això obri la porta a fer-lo servir indefinidament.

Què fa

És la peça que decideix si un producte pot arrencar, i ha de donar aquesta resposta tant amb xarxa com sense.

  • Genera claus de llicència amb un format propi i en controla el cicle de vida.
  • Admet llicències perpètues, per subscripció i de prova.
  • Limita per seients quants dispositius poden activar una mateixa llicència.
  • Habilita o deshabilita funcionalitats concretes per llicència mitjançant entitlements.
  • Valida en línia o fora de línia amb tokens signats en Ed25519 i caducitat configurable.
  • Exposa la validació per REST i per gRPC, perquè cada producte faci servir el protocol que li convé.
  • Registra en auditoria tota operació sobre llicències i avisa per correu de caducitats i activacions.

Arquitectura

Es descompon en serveis petits darrere d’un gateway, amb la criptografia triada perquè la validació offline no depengui de compartir cap secret.

  • Gateway d’API en Rust sobre Axum com a únic punt d’entrada.
  • Serveis separats de llicències, validació i notificacions, cadascun amb la seva responsabilitat acotada.
  • Doble protocol al servei de validació: REST per a integracions senzilles i gRPC per a les que necessiten latència baixa.
  • Signatura asimètrica Ed25519 per als tokens offline: el client verifica amb la clau pública i mai custodia un secret capaç d’emetre llicències.
  • Contrasenyes amb Argon2id i claus d’API emmagatzemades com a SHA-256.
  • PostgreSQL 16 com a magatzem, accedit amb SQLx i consultes verificades en compilació.
  • Dashboard d’administració en Next.js i desplegament complet amb Docker Compose en una sola comanda.

Stack

Serveis en Rust sobre Axum per a la part REST i tonic per a gRPC, amb SQLx contra PostgreSQL 16. La criptografia combina Ed25519 per als tokens offline, Argon2id per a contrasenyes i SHA-256 per a claus d’API. El panell d’administració és Next.js 16 amb TypeScript i Tailwind, i tot el conjunt s’aixeca amb Docker Compose, amb integració contínua a GitHub Actions i Jenkins.

Tornar als projectes