feat: license server API (Node.js, proprietary) #49

Open
opened 2026-04-09 01:53:52 +00:00 by maximus · 0 comments
Owner

Contexte

Microservice propriétaire pour la génération, activation et gestion des licences.
Ref: spec-monetisation.md — Phase 2, Issue 4
Projet séparé : simpl-resultat-api (hors repo GPL)

Tâches

  • Créer le projet Node.js (Hono ou Express) pour l'API de licences
  • Générer la paire de clés Ed25519 (clé privée sur le serveur UNIQUEMENT)
  • Schéma PostgreSQL : tables licenses, license_activations, subscriptions (voir spec)
  • Endpoints :
    • POST /licenses/generate — génère JWT signé Ed25519 avec claim exp obligatoire
    • POST /licenses/activate — vérifie machine_limit, signe un activation token avec machine_id
    • POST /licenses/verify — vérification en ligne optionnelle
    • POST /licenses/deactivate — libère un slot machine
    • POST /licenses/revoke — révocation admin
    • GET /subscriptions/status — statut abonnement (auth JWT Logto)
    • POST /subscriptions/webhook — webhooks Stripe Billing
  • Auth : JWT licence comme bearer token pour activate/verify/deactivate. API key pour webhooks Stripe. JWT Logto pour endpoints utilisateur.
  • Rate limiting : 5 req/min par IP sur endpoints publics (OWASP API4:2023)
  • Vérification signature Stripe webhook (Stripe-Signature header) — OBLIGATOIRE (CWE-345)
  • Déployer sur Coolify (api.lacompagniemaximus.com)
  • Tests d'intégration

Notes de révision

  • Rate limiting + auth obligatoires sur tous les endpoints (review sécurité)
  • Vérification signature Stripe webhook critique pour empêcher la forge de licences gratuites (review sécurité)
## Contexte Microservice propriétaire pour la génération, activation et gestion des licences. Ref: `spec-monetisation.md` — Phase 2, Issue 4 Projet séparé : `simpl-resultat-api` (hors repo GPL) ## Tâches - [ ] Créer le projet Node.js (Hono ou Express) pour l'API de licences - [ ] Générer la paire de clés Ed25519 (clé privée sur le serveur UNIQUEMENT) - [ ] Schéma PostgreSQL : tables `licenses`, `license_activations`, `subscriptions` (voir spec) - [ ] Endpoints : - `POST /licenses/generate` — génère JWT signé Ed25519 avec claim `exp` obligatoire - `POST /licenses/activate` — vérifie machine_limit, signe un activation token avec machine_id - `POST /licenses/verify` — vérification en ligne optionnelle - `POST /licenses/deactivate` — libère un slot machine - `POST /licenses/revoke` — révocation admin - `GET /subscriptions/status` — statut abonnement (auth JWT Logto) - `POST /subscriptions/webhook` — webhooks Stripe Billing - [ ] Auth : JWT licence comme bearer token pour activate/verify/deactivate. API key pour webhooks Stripe. JWT Logto pour endpoints utilisateur. - [ ] Rate limiting : 5 req/min par IP sur endpoints publics (OWASP API4:2023) - [ ] Vérification signature Stripe webhook (`Stripe-Signature` header) — OBLIGATOIRE (CWE-345) - [ ] Déployer sur Coolify (`api.lacompagniemaximus.com`) - [ ] Tests d'intégration ## Notes de révision - Rate limiting + auth obligatoires sur tous les endpoints (review sécurité) - Vérification signature Stripe webhook critique pour empêcher la forge de licences gratuites (review sécurité)
maximus added this to the spec-monetisation milestone 2026-04-09 01:53:52 +00:00
maximus added the
status:ready
type:feature
source:human
labels 2026-04-09 01:53:52 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: maximus/Simpl-Resultat#49
No description provided.