🔑 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 :
Option B — Après démarrage via la page étudiant¶
- Ouvrir Chaos Admin → localhost:3003
- Cliquer sur 🔑 Activer une licence (bouton en haut à droite)
- Coller la clé
PFSH-xxx.yyy→ ⚡ Activer
Option C — Depuis l'interface Gestion (superadmin)¶
- Se connecter à Chaos Admin → Administration → Gestion
- 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é¶
- 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.