Activation de licence
L’activation de licence est une méthode courante pour contrôler la distribution et l’utilisation des licences logicielles. Babel Licensing s’en sert pour distribuer et activer de façon sécurisée les licences de vos applications .NET. Cette page montre comment créer une licence dans le Babel Licensing Service avec Babel Desktop, et comment configurer une application cliente .NET pour qu’elle l’active avec la bibliothèque Babel Licensing.
Prérequis
Pour mettre en place l’activation de licence dans le Babel Licensing Service, procédez comme suit. Vérifiez d’abord que le Babel Licensing Service est opérationnel 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. Vous disposerez ainsi de la base nécessaire pour générer des licences d’activation.
Vous devez aussi télécharger depuis GitHub le code source du client d’activation de licence. Ce code client servira à intégrer l’activation de licence à votre application .NET.
git clone https://github.com/babelfornet/license-activation-console-example.gitPour cet exemple, la création d’une licence d’activation suppose de configurer un modèle de licence adéquat dans le système Babel Licensing. Ce modèle sert de gabarit à toutes les licences que vous générerez, ce qui garantit leur cohérence et une configuration correcte.
Créer une licence d’activation
Babel Desktop se connecte au Babel Licensing Service et vous permet de créer et de configurer des licences pour vos applications. Vous pouvez préciser différents éléments de la licence, comme le titulaire de licence, la date d’expiration et les fonctionnalités autorisées. Vous pouvez en outre définir des restrictions d’activation, comme le nombre maximal d’activations.
Pour enregistrer une licence d’activation dans 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 créé au paragraphe précédent (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 Activation
Dans le groupe Conditions, réglez Mode sur Activation.
Définir le nombre d’activations
Dans Sites, saisissez le nombre d’activations disponibles pour cette licence.
Générer la clé utilisateur
Dans le groupe Informations de licence, cliquez sur le bouton Générer à l’extrémité droite du champ Clé utilisateur. Cette clé utilisateur servira à activer la licence sur une machine précise.
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), ainsi que les Champs, Fonctionnalités ou Restrictions supplémentaires que vous souhaitez pour cette licence.
Sélectionner le format
Sélectionnez le Format de la licence : XML, Signature XML, ASCII ou Base32.
Enregistrer la licence
Enregistrez le formulaire. Le service génère et signe la licence.
La clé publique extraite du fichier Keys.snk, nécessaire à la validation de licence, est déjà configurée dans le code source de l’exemple.
La licence d’activation que vous venez d’enregistrer apparaît maintenant dans la grille des licences, avec une clé de licence unique et d’autres informations utiles. Avec l’édition Data Center, vous pouvez aussi créer des licences d’activation sur la page Licences de l’application web.
Une fois la licence d’activation enregistrée, le client peut activer la licence sur sa machine en fournissant la clé utilisateur et, le cas échéant, l’identifiant de machine. Le Babel Licensing Service valide ces informations et émet un jeton de licence lié à cette machine, ce qui permet au logiciel de s’exécuter. Chaque activation compte dans la limite de jetons du service ; voir Jetons de licence.
Configurer un client
Une fois la licence créée dans le Babel Licensing Service, vous devez configurer votre application cliente .NET pour qu’elle active la licence. Il s’agit d’intégrer la bibliothèque Babel Licensing à votre application et d’écrire le code nécessaire à l’activation de la licence. La bibliothèque Babel Licensing fournit un ensemble d’API et de méthodes qui simplifient le flux de travail d’activation de licence et assurent une validation de licence sécurisée.
Pour ouvrir le projet d’exemple d’activation de licence, procédez comme suit :
Ouvrir la solution
Accédez à l’emplacement du projet d’exemple d’activation de licence et double-cliquez sur le fichier de solution ClientActivation.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 d’exemple d’activation de licence démarre : vous pouvez alors utiliser les fonctionnalités de licence et tester le processus d’activation de licence.

Console d’activation de licence
Saisir la clé d’activation
Saisissez la clé d’activation générée pour la licence et appuyez sur ENTER.
Si la clé d’activation est valide et correspond à celle définie pour la licence, la licence est activée.
Vous pouvez maintenant désactiver la licence ou fermer l’application en appuyant sur « n ».
Fermer ou désactiver l’application
Appuyez sur « n », puis sur ENTER, pour fermer l’application.
Si vous redémarrez l’application, vous constatez que la licence est toujours active. En effet, le client a été configuré pour conserver un cache local des informations de licence. Il ne contacte le serveur qu’une fois tous les 5 jours pour effectuer la validation de licence à distance. Ce mécanisme de cache permet à l’application de continuer à fonctionner même si la connexion au serveur est temporairement indisponible.
Voici le code source complet de l’exemple d’activation de licence :
using Babel.Licensing;
// Create a new configuration object
BabelLicensingConfiguration config = new BabelLicensingConfiguration() {
// Set the service URL
ServiceUrl = "http://localhost:5005",
// Set the public key used to verify the license signature
SignatureProvider = RSASignature.FromKeys("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDE1VRiIdr6fiVZKve7NVgjIvGdRiRx0Mjjm+Yzf6tLbzFnxLs0fat5EoRcubxx0QQQDfydsJBE/fc7cwRWSrE2xK6X4Eb4W8O47pCMjqvTQZfDqQywEZJrLlxpp9hlKz6FDYX4SagrjmP1gdw8olo+n+IBz8ubkNxRhvycikxuDQIDAQAB"),
// Set a unique client ID
ClientId = "my app client id"
};
// Create the client object used to communicate with the server
BabelLicensing client = new BabelLicensing(config);
// Use BabelServiceLicenseProvider to cache a local copy of the license for offline use
BabelServiceLicenseProvider provider = new BabelServiceLicenseProvider(client) {
// Refresh the license by contacting the server every 5 days
// If set to TimeSpan.Zero, the license will be validated every time on the server
LicenseRefreshInterval = TimeSpan.FromDays(5)
};
// Register the license provider with BabelLicenseManager
BabelLicenseManager.RegisterLicenseProvider(typeof(Program), provider);
// Check if the user key was set
if (provider.UserKey == null)
{
// If the user key was not entered, the license has not been activated yet.
// Ask the user to activate the license
Console.WriteLine("Please enter your activation license key: ");
string? userKey = Console.ReadLine();
try
{
await client.ActivateLicenseAsync(userKey, typeof(Program));
Console.WriteLine("License activated.");
}
catch (Exception ex)
{
Console.WriteLine($"Could not activate license: {ex.Message}");
return;
}
}
try
{
// Validate the license
// This will contact the server to validate the license if the local copy is expired
// You can customize the validation interval using the LicenseValidationInterval property
var license = await BabelLicenseManager.ValidateAsync(typeof(Program));
Console.WriteLine($"License {license.Id} valid.");
// Ask to deactivate the license
Console.WriteLine("Do you want to deactivate the license? (y/n)");
string? answer = Console.ReadLine();
if (answer?.ToLower() == "y")
{
try
{
await client.DeactivateLicenseAsync(provider.UserKey);
Console.WriteLine("License deactivated.");
}
catch (Exception ex)
{
Console.WriteLine($"Could not deactivate license: {ex.Message}");
}
}
}
catch (Exception ex)
{
Console.WriteLine($"License not valid: {ex.Message}");
return;
}
La classe BabelLicensing est instanciée pour communiquer avec le serveur de licences. La clé publique servant à valider la licence est définie dans la configuration du service, de même que l’URL de communication avec le service.
Ensuite, une instance de la classe BabelServiceLicenseProvider est créée et inscrite auprès de BabelLicenseManager. Elle se charge de mettre en cache une copie locale de la licence pour une utilisation hors ligne. La propriété LicenseRefreshInterval détermine la fréquence à laquelle la licence doit être actualisée auprès du serveur.
Le code vérifie si la clé utilisateur (la clé de la licence d’activation) a été saisie. Si elle n’est pas définie, la licence n’a pas encore été activée.
Si la clé utilisateur n’est pas définie, le code invite l’utilisateur à saisir la clé de la licence d’activation et tente d’activer la licence en contactant le serveur.
Le code valide ensuite la licence avec la méthode ValidateAsync de BabelLicenseManager. Cette méthode contrôle la validité de la licence et, si la copie locale de la licence a expiré, contacte le serveur pour la valider.
Après la validation de la licence, le code demande à l’utilisateur s’il veut désactiver la licence. Si l’utilisateur confirme la désactivation, le code appelle la méthode DeactivateLicenseAsync du client BabelLicensing pour désactiver la licence.
Dans l’ensemble, ce code montre comment utiliser la bibliothèque cliente Babel Licensing pour gérer l’activation, la validation et la désactivation de licence dans une application cliente.
L’activation de licence présente plusieurs avantages, dont une sécurité renforcée, puisque seuls les utilisateurs autorisés peuvent activer et utiliser le logiciel sous licence. Elle vous permet aussi de suivre et de gérer les activations de licence, et vous renseigne ainsi sur les habitudes d’utilisation de votre application. Avec l’activation de licence de Babel Licensing, vous assurez le respect des conditions de licence et vous gardez le contrôle de la distribution et de l’utilisation de votre logiciel.
Pour utiliser l’activation de licence, créez les licences avec Babel Desktop ou l’application web et configurez votre application cliente pour qu’elle les active. Le service assure alors la conformité des licences et contribue à protéger votre propriété intellectuelle.