Skip to Content
Nouvelle version 12 disponible 🎉
LicensingModes de licenceFichier de licence

Fichier de licence

Les fichiers de licence contrôlent les licences logicielles dans les environnements déconnectés ou protégés, où l’application ne peut pas toujours joindre le Babel Licensing Service. Vous pouvez créer un fichier de licence de deux façons :

Cette page montre comment créer un fichier de licence et comment le valider dans votre application .NET.

Prérequis

Le Babel Licensing Service n’est nécessaire que si vous créez le fichier de licence dans le service. Dans ce cas, vérifiez que le Babel Licensing Service s’exécute sur votre serveur, conformément aux instructions de la section Premiers pas. Créez ensuite un produit de test et le modèle de licence correspondant en suivant les instructions ci-dessous. Si vous générez le fichier de licence hors ligne avec lic, vous pouvez ignorer cette étape.

Vous devez ensuite télécharger depuis GitHub le code source du client de fichier de licence. Ce code client permet d’intégrer les fichiers de licence à votre application .NET. Utilisez la commande suivante pour cloner le dépôt :

git clone https://github.com/babelfornet/license-file-console-example.git

Lorsque vous créez le fichier de licence dans le Babel Licensing Service, il repose sur le modèle de licence correspondant.

Créer un fichier de licence

Lorsque vous générez un fichier de licence, vous pouvez préciser différents éléments, comme le titulaire de licence, le produit, la date d’expiration, les fonctionnalités autorisées et d’éventuels champs de licence personnalisés. Le fichier de licence est signé numériquement pour garantir son intégrité et son authenticité.

Avec Babel Desktop

Pour créer un fichier de licence avec Babel Desktop, procédez comme suit :

Se connecter au service

Ouvrez Babel Desktop et cliquez sur l’icône du profil de votre Babel Licensing Service dans la barre d’activité. La génération de licences exige un profil Test local réglé sur Gestion locale : exécutez donc Babel Desktop sur la machine du service ; pour un service distant, utilisez l’application web ou la Management API.

Générer une licence

Ouvrez la vue Licences et choisissez Générer une licence dans la barre d’outils.

Sélectionner le modèle et la clé de signature

Dans le groupe Modèle, sélectionnez le Modèle de licence (voir Modèles de licence) et la Clé de signature. Si aucune clé de signature n’est sélectionnée, c’est la clé du modèle, ou celle de son produit, qui est utilisée.

Régler le mode sur Fichier

Dans le groupe Conditions, réglez Mode sur Fichier. Une licence fichier n’a pas besoin de clé utilisateur.

Saisir le titulaire et les détails de la licence

Saisissez les informations sur le titulaire de licence (un nom de titulaire ou une société est obligatoire), les dates d’émission et d’expiration, ainsi que les Champs et les Fonctionnalités nécessaires.

Enregistrer la licence

Enregistrez le formulaire. Le service génère et signe la licence, qui apparaît dans la grille des licences.

Exporter le fichier de licence

Sélectionnez la licence et choisissez Exporter la clé de licence… dans la barre d’outils. Le fichier est enregistré dans le dossier d’export des licences configuré dans les paramètres Gestion des licences, et son nom est l’identifiant de licence. Renommez-le ClientFile.licenses ou ClientFile.lic pour cet exemple.

Avec l’édition Data Center, vous pouvez aussi générer et télécharger la licence depuis la page Licences de l’application web.

Avec la ligne de commande lic

Pour créer le fichier de licence hors ligne, sans le Babel Licensing Service, utilisez l’outil en ligne de commande lic. Signez la licence avec la clé que l’application utilise pour la valider ; pour cet exemple, le fichier Keys.snk :

lic ClientFile.dll --keyfile Keys.snk --sign --licensee name="Contoso" --expiredate 365 --feature Pro=1 --output ClientFile.licenses

Toutes les options sont décrites dans la Référence.

Vous pouvez maintenant distribuer le fichier de licence à vos clients ou l’utiliser pour déployer la licence dans des environnements déconnectés ou protégés, où le Babel Licensing Service n’est pas accessible.

Configurer un client

Pour valider les licences à partir d’un fichier de licence, vous devez intégrer la bibliothèque Babel Licensing à votre application .NET. La bibliothèque fournit un ensemble d’API et de méthodes qui facilitent la validation de licence. En référençant la bibliothèque Babel Licensing et en ajoutant le code nécessaire, vous vous assurez que votre application valide correctement le fichier de licence.

Pour ouvrir le projet console d’exemple de fichier de licence, procédez comme suit :

Localiser le projet d’exemple

Accédez à l’emplacement du projet d’exemple de fichier de licence.

Copier le fichier de licence

Copiez le fichier de licence ClientFile.licenses dans le dossier du projet.

Ouvrir la solution

Double-cliquez sur le fichier de solution ClientFile.sln pour l’ouvrir dans votre environnement de développement intégré (IDE), par exemple Visual Studio.

Vérifier la référence à la bibliothèque cliente

Une fois le projet ouvert, vérifiez que la bibliothèque cliente Babel Licensing est correctement référencée. Si la référence est absente, reportez-vous au paragraphe Composants client pour configurer un dépôt NuGet local.

Générer la solution

Une fois les références vérifiées, générez la solution en sélectionnant l’option « Build » (Générer) ou « Rebuild » (Régénérer) dans le menu de l’IDE.

Exécuter l’application

Une fois la solution générée, vous pouvez exécuter l’application en configuration de débogage en cliquant sur le bouton « Start Debugging » (Démarrer le débogage) ou en utilisant le raccourci clavier de votre IDE (par exemple F5 dans Visual Studio). L’application console d’exemple de fichier de licence démarre, valide le fichier de licence et affiche les informations du titulaire de licence.

Exemple de validation d’un fichier de licence

Voici le code source de l’application cliente :

using System; using Babel.Licensing; class Program { /// <summary> /// Public key used to validate the license signature. /// </summary> static string PublicKey => "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDE1VRiIdr6fiVZKve7NVgjIvGdRiRx0Mjjm+Yzf6tLbzFnxLs0fat5EoRcubxx0QQQDfydsJBE/fc7cwRWSrE2xK6X4Eb4W8O47pCMjqvTQZfDqQywEZJrLlxpp9hlKz6FDYX4SagrjmP1gdw8olo+n+IBz8ubkNxRhvycikxuDQIDAQAB"; static Program() { // Register the file license provider for the Program class // that will be used by the BabelLicenseManager to locate the license file. // The license file should be named as the assembly name with .licenses extension. BabelFileLicenseProvider provider = new BabelFileLicenseProvider(); // Sets the public key used to validate the license signature provider.SignatureProvider = RSASignature.FromKeys(PublicKey); // Uncomment the following line to customize the license file path // provider.LicenseFilePath = "license.xml"; // Register the provider for the Program class BabelLicenseManager.RegisterLicenseProvider(typeof(Program), provider); } static void Main(string[] args) { var program = new Program(); try { var license = program.ValidateLicense(); Console.WriteLine($"License {license.Id} registered to {license.Licensee?.Company}"); } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.WriteLine("Press any key to exit..."); Console.ReadKey(); } public ILicense ValidateLicense() { // Uses the registered file license provider for Program class return BabelLicenseManager.Validate(typeof(Program), this); } }

Dans le constructeur statique de la classe Program, le fournisseur de licence fichier est inscrit au moyen de BabelFileLicenseProvider. Ce fournisseur se charge de localiser et de valider le fichier de licence pour la classe Program. Par défaut, le fichier de licence doit porter le même nom que l’assembly, avec l’extension .licenses ou .lic.

Extraire et protéger la clé publique

Dans le code fourni, la propriété PublicKey contient la clé publique nécessaire pour valider la signature de la licence. Sa valeur est extraite du fichier Keys.snk.

var rsa = RSASignature.CreateFromKeyFile("Keys.snk"); string publicKey = rsa.ExportKeys(true);

Pour extraire la clé publique du fichier Keys.snk, le code utilise la méthode RSASignature.CreateFromKeyFile, à laquelle il passe le nom du fichier en paramètre. Cette méthode crée un objet RSASignature qui représente la paire de clés stockée dans le fichier Keys.snk. La méthode ExportKeys est ensuite appelée sur l’objet RSASignature avec le paramètre true pour exporter la clé publique. Elle renvoie la clé publique sous forme de chaîne.

Le fichier Keys.snk contient la clé privée et ne doit pas être déployé avec l’application. La clé privée doit être conservée en lieu sûr et protégée contre tout accès non autorisé.

Utilisez des fichiers de licence lorsque l’application n’a qu’une connexion limitée, ou aucune connexion, au Babel Licensing Service. Vous les générez avec Babel Desktop ou la ligne de commande lic, et ils sont faciles à déployer et à déplacer d’un système à l’autre. Grâce au fichier signé, les conditions de licence restent sous votre contrôle même hors ligne, et votre application .NET le valide sans contacter le service.

Validation de licence avec un gestionnaire de licences

En plus de BabelFileLicenseProvider, Babel Licensing propose d’autres méthodes de validation de licence, fondées sur des classes de gestionnaire de licences. Ces classes, telles que XmlLicenseManager et StringLicenseManager, offrent de la souplesse pour charger et valider les clés de licence sans recourir à BabelFileLicenseProvider pour trouver le fichier de licence.

La classe XmlLicenseManager est conçue pour les fichiers de licence au format XML. Elle permet de définir la clé publique servant à valider la signature de la licence et fournit des méthodes pour lire la clé de licence dans un fichier XML, la valider et récupérer l’objet licence validé.

Voici l’extrait de code correspondant, avec ses explications :

public ILicense ValidateLicenseWithXmlLicenseManager() { // Uses the Xml license manager XmlLicenseManager manager = new XmlLicenseManager(); // Sets the public key used to validate the license signature manager.SignatureProvider = RSASignature.FromKeys(PublicKey); // Reads the license from the license file string licenseKey = File.ReadAllText("ClientFile.lic"); // Validates the license return manager.Validate(licenseKey, typeof(Program), this); }

La classe StringLicenseManager est une autre option, qui permet de valider des clés de licence directement à partir d’une chaîne encodée. Elle est utile lorsque les informations de licence proviennent d’une autre source, comme une base de données ou une réponse d’API.

Les classes XmlLicenseManager et StringLicenseManager offrent toutes deux d’autres façons de gérer la validation de licence et laissent de la souplesse dans le contrôle du chargement et de la validation. Elles permettent aux utilisateurs de définir leur propre logique d’accès à la clé de licence et donnent le moyen de vérifier l’authenticité et l’intégrité de la licence avec la clé publique indiquée.

Last updated on