Skip to Content
Nouvelle version 12 disponible 🎉
LicensingModes de licenceLicence flottante

Licence flottante

Une licence flottante est un pool de licences partagé entre les utilisateurs ou les machines d’un réseau. Avec Babel Licensing, vous créez les licences flottantes dans le Babel Licensing Service à l’aide de Babel Desktop. Cette page montre comment créer une licence flottante avec Babel Desktop et comment configurer une application cliente .NET pour qu’elle l’utilise avec la bibliothèque Babel Licensing.

Prérequis

Pour mettre en place les licences flottantes 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 flottantes.

Vous devez aussi télécharger depuis GitHub le code source du client de licence flottante. Ce code client servira à intégrer les licences flottantes à votre application .NET.

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

Pour cet exemple, la création d’une licence flottante nécessite la création du modèle de licence correspondant.

Créer une licence flottante

Babel Desktop se connecte au Babel Licensing Service et vous permet de créer et de configurer des licences flottantes. Vous définissez la taille du pool de licences, c’est-à-dire le nombre d’utilisateurs ou de machines autorisés à utiliser la licence en même temps. Votre application acquiert ensuite une licence du pool lorsqu’elle en a besoin et la libère lorsqu’elle a terminé. Chaque poste emprunté est un jeton qui compte dans la limite de jetons du service ; voir Jetons de licence.

Pour enregistrer une licence flottante 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 Flottante

Dans le groupe Conditions, réglez Mode sur Flottante.

Définir la taille du pool

Dans Sites, saisissez la taille du pool flottant : le nombre de licences qui peuvent être utilisées en même temps.

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. L’application cliente utilisera ce code unique pour demander une licence flottante.

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 flottante 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 flottantes sur la page Licences de l’application web.

Le Babel Licensing Service limite l’utilisation simultanée de la licence au nombre de sites flottants que vous avez saisi.

Configurer un client

Une fois la licence flottante créée dans le Babel Licensing Service, vous devez configurer votre application cliente .NET pour qu’elle utilise la licence. Il s’agit d’intégrer la bibliothèque Babel Licensing à votre application et d’écrire le code nécessaire pour demander et libérer des licences du pool de licences flottantes. La bibliothèque Babel Licensing fournit les API de validation et de contrôle des licences.

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

Ouvrir la solution

Accédez à l’emplacement du projet d’exemple de licence flottante et double-cliquez sur le fichier de solution ClientFloating.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 de licence flottante démarre : vous pouvez alors utiliser les fonctionnalités de licence et tester le flux de travail de licence flottante.

Saisir la clé de licence flottante

Saisissez la clé de licence flottante générée pour la licence et appuyez sur ENTER.

Console de licence flottante

Voici le code source complet de l’exemple de licence flottante :

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 in case multiple instances of the application are running on the same machine ClientId = Guid.NewGuid().ToString() }; // Create the client object used to communicate with the server BabelLicensing client = new BabelLicensing(config); // Ask the user to enter the floating license key Console.WriteLine("Please enter your floating license key: "); string? userKey = Console.ReadLine(); try { var result = await client.RequestFloatingLicenseAsync(userKey, typeof(Program)); Console.WriteLine($"License {result.License.Id} requested."); } catch (Exception ex) { Console.WriteLine($"Could not request floating license: {ex.Message}"); return; } try { // Simulate a long task which requires the allocation of a license for (int i = 0; i < 10; i++) { // Validate the license // This will contact the server to validate the license var result = await client.ValidateLicenseAsync(userKey, typeof(Program)); Console.WriteLine($"{i}) License {result.License.Id} valid."); // Wait 1 second await Task.Delay(1000); } try { // Release the license to allow other clients to use it await client.ReleaseFloatingLicenseAsync(userKey); Console.WriteLine("License released."); } catch (Exception ex) { Console.WriteLine($"Could not release 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.

L’utilisateur est invité à saisir la clé de licence flottante. Le client utilise cette clé pour demander une licence flottante en appelant la méthode RequestFloatingLicenseAsync. La clé utilisateur et le type du programme sont passés en paramètres. En cas de réussite, la méthode renvoie un objet résultat qui contient les informations de la licence demandée.

Le code simule une tâche longue qui a besoin de la licence allouée. Dans une boucle, la licence est validée avec la méthode ValidateLicenseAsync. La clé utilisateur et le type du programme sont passés en paramètres. Si la licence est valide, la méthode renvoie un objet résultat qui contient les informations de la licence. La boucle comprend aussi un délai d’une seconde pour simuler la durée de la tâche.

Une fois la tâche terminée, le client libère la licence flottante avec la méthode ReleaseFloatingLicenseAsync.

Les licences flottantes permettent de partager un nombre limité de licences sur un réseau d’utilisateurs ou de machines, avec moins de travail d’administration que l’attribution d’une licence à chacun. Elles conviennent à une base d’utilisateurs en croissance, ou à des licences partagées entre services ou équipes.

Last updated on