Aller au contenu

🔑 Système de licence PerfShop

PerfShop utilise un système de licence produit pour contrôler l'accès aux fonctionnalités avancées. Ce système est distinct de la licence logicielle AGPL 3.0 qui régit le code source.


Fonctionnalités par plan

Ce qui est toujours accessible (sans licence)

Interface Accès
🛒 Shop e-commerce ✅ Toujours accessible
💥 Chaos Performance — Niveau 1 ✅ Gratuit (freemium)
💥 Chaos Scripting — Niveau 1 ✅ Gratuit (freemium)

Ce qui nécessite une licence (HTTP 402 sans clé)

Interface Sans licence Avec licence
💥 Chaos Admin — niveaux 2 à 4
💥 Chaos Métier, Fonctionnel, Sécurité
🔧 Backoffice admin
📊 Monitoring admin
📝 Scripts UI
🎯 JMeter UI

Plans de licence

Plan Chaos inclus Usage typique
Freemium Chaos Performance N1 + Chaos Scripting N1 Démo, découverte
Fonctionnel + Chaos Métier + Chaos Fonctionnel Équipes QA
Performance + Chaos Scripting N2–4 + JMeter UI + Scripts UI Tests de performance
Entreprise Tous les chaos, tous les niveaux, toutes les interfaces Organismes de formation

→ Obtenir une licence sur perfshop.io


Activer une licence

Option A — Avant le démarrage (recommandé en salle de classe)

Injecter la clé dans le fichier .env avant docker compose up :

echo "PERFSHOP_LICENSE_KEY=PFSH-xxx.yyy" >> .env
Add-Content .env "PERFSHOP_LICENSE_KEY=PFSH-xxx.yyy"

Option B — Après démarrage via la page étudiant

  1. Ouvrir Chaos Adminlocalhost:3003
  2. Cliquer sur 🔑 Activer une licence (bouton en haut à droite)
  3. Coller la clé PFSH-xxx.yyy⚡ Activer

Option C — Depuis l'interface Gestion (superadmin)

  1. Se connecter à Chaos AdminAdministrationGestion
  2. Section 🔑 Licence PerfShop → coller la clé → ⚡ Activer la licence

Révoquer une licence

Pour désactiver la licence active sur une instance :

Chaos Admin → Administration → Gestion → 🗑 Révoquer la licence

Effet immédiat

La révocation bloque toutes les interfaces protégées immédiatement. La même clé peut être réactivée à tout moment.


Fonctionnement technique

Vérification offline-first

La validation est entièrement locale — aucun appel réseau vers perfshop.io au runtime.

Le backend PerfShop vérifie la signature RSA-PSS de la clé à chaque démarrage et à chaque activation. La clé est persistée dans la table perfshop_license (une seule ligne, upsert sur id='current').

PFSH-{payload_base64url}.{signature_base64url}
      │                    │
      │                    └─ Signature RSA-PSS (clé privée perfshop.io)
      └─ JSON encodé : licenseId, holder, plan, issuedAt, expiresAt, features

Persistance

La licence survit aux redémarrages du container — elle est stockée en base MySQL et rechargée en mémoire (AtomicReference) au démarrage du backend.

Intercepteur HTTP

Toutes les routes protégées passent par LicenseInterceptor.java qui retourne HTTP 402 Payment Required si aucune licence valide n'est active.

Les routes publiques (shop e-commerce, freemium N1) sont dans la liste blanche isAlwaysAllowed() et ne sont jamais bloquées.


Format de la clé

PFSH-eyJsaWNlbnNlSWQiOiIuLi4ifQ.signature_base64url
  • Commence toujours par PFSH-
  • Deux parties séparées par un .
  • Payload : JSON base64url (licenseId, holder, plan, issuedAt, expiresAt, features)
  • Signature : RSA-PSS SHA-256, générée par perfshop.io

Scénario typique — salle de classe

# 1. Récupérer la clé sur perfshop.io
# 2. Ajouter au .env avant le démarrage
echo "PERFSHOP_LICENSE_KEY=PFSH-xxx.yyy" >> .env

# 3. Démarrer la stack
docker compose -f docker-compose.desktop.yml up -d --build

# 4. Vérifier l'activation
# → Chaos Admin : badge "✅ Licence active — Enterprise · PerfShop"

Ou activer après démarrage depuis Chaos Admin → Gestion si la clé n'était pas disponible au moment du démarrage.


FAQ

La licence fonctionne-t-elle hors ligne ? Oui — la vérification RSA-PSS est 100% locale. Aucune connexion à perfshop.io n'est nécessaire après activation.

La licence est-elle liée à une machine ? Non — la clé n'est pas liée à un hostname ou une adresse IP. Elle peut être utilisée sur n'importe quelle instance PerfShop.

Que se passe-t-il si la licence expire ? Les interfaces protégées retournent à nouveau HTTP 402. Le shop e-commerce et le freemium restent accessibles. Il suffit d'activer une nouvelle clé.

Peut-on avoir plusieurs licences actives ? Non — une seule licence est active à la fois (une ligne en BDD). Activer une nouvelle clé remplace l'ancienne.