Fr|En

DTL Software — Juillet 2026

DTL_LicenseServer

Service de licences centralisé pour autoriser les installations d'un logiciel client sans exposer la base de données ni les secrets du serveur.

v1.0-6Français / EnglishPHP / MariaDB / PythonHTTPS

DTL_LicenseServer centralise le cycle de vie des licences d'un logiciel client et limite chaque licence au nombre de machines autorisé.

Le système associe un service Web léger en PHP et MariaDB, un utilitaire d'administration en Python et un client Python destiné aux applications Windows. Le poste utilisateur communique uniquement avec l'API HTTPS et ne se connecte jamais directement à MariaDB.

Quoi ?

Le serveur couvre la création administrative des licences, l'activation et l'actualisation des machines, la validation en ligne, la désactivation et la réactivation contrôlée. Une activation acceptée produit un jeton signé avec Ed25519. Seul le hachage SHA-256 de la clé de licence est conservé dans MariaDB.

Pourquoi ?

Le dispositif vérifie l'état et l'expiration de la licence, la machine présentée et le nombre d'activations non révoquées. Il maintient les secrets critiques sur le serveur et permet au logiciel client de s'appuyer sur une décision centralisée et traçable.

Architecture

L'API PHP porte la logique d'autorisation et la signature des jetons. MariaDB conserve les produits, les licences, les activations et l'historique des événements. L'utilitaire d'administration crée les licences, tandis que le client Windows calcule l'empreinte de la machine et conserve son jeton local.

Cycle de vie

  1. Une licence est créée pour un produit, un client, une échéance facultative et un nombre maximal de machines.
  2. Une première activation associe la licence à l'empreinte SHA-256 de la machine et reçoit un jeton Ed25519.
  3. La même machine peut actualiser son activation sans consommer une place supplémentaire.
  4. La validation en ligne contrôle le jeton, la machine, l'activation et l'état courant de la licence.
  5. La désactivation révoque l'activation et invalide son jeton.
  6. Une machine révoquée peut être réactivée ultérieurement si une place est disponible : sa ligne est réutilisée après contrôle du quota.

Interface du service

  • health.php — état du service et de MariaDB ;
  • activate.php — activation, actualisation ou réactivation d'une machine ;
  • validate.php — validation en ligne d'un jeton signé ;
  • deactivate.php — révocation de la machine courante ;
  • admin_create_license.php — création protégée par X-Admin-Key.

Données de référence

Le schéma MariaDB distribué avec le projet définit les tables products, licenses, activations, license_events et admin_users, ainsi que la vue license_status. Le produit générique fourni à titre d'exemple est MyProduct, de code MYPRODUCT.

Limite actuelle

Le client mémorise next_check_days et offline_grace_days, mais n'applique pas encore lui-même une décision de grâce hors ligne. Les paramètres de limitation des tentatives existent également dans la configuration sans être appliqués par les scripts actuels.

Sécurité et confidentialité

  • les échanges sont prévus pour HTTPS ;
  • le mot de passe MariaDB et la clé privée de signature restent sur le serveur ;
  • les clés de licence sont enregistrées uniquement sous forme de hachages SHA-256 ;
  • le client transmet une empreinte SHA-256 et non les identifiants Windows bruts ;
  • une signature valide protège l'intégrité du jeton, tandis que la validation en ligne reste l'autorité sur l'état courant.