Skip to Content
Nuova versione 12 disponibile 🎉

File di licenza

I file di licenza controllano le licenze software in ambienti disconnessi o protetti, in cui l’applicazione potrebbe non riuscire a raggiungere il Babel Licensing Service. Puoi creare un file di licenza in due modi:

Questa pagina mostra come creare un file di licenza e come convalidarlo nella tua applicazione .NET.

Prerequisiti

Il Babel Licensing Service serve solo se crei il file di licenza nel servizio. In quel caso, assicurati che il Babel Licensing Service sia in esecuzione sul tuo server, secondo le istruzioni della sezione Per iniziare. Poi crea un prodotto di test e il relativo modello di licenza seguendo le istruzioni riportate di seguito. Se generi il file di licenza offline con lic, puoi saltare questo passo.

Poi devi scaricare da GitHub il codice sorgente del client per il file di licenza. Questo codice client permette di integrare i file di licenza nella tua applicazione .NET. Usa il comando seguente per clonare il repository:

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

Quando crei il file di licenza nel Babel Licensing Service, il file si basa sul relativo modello di licenza.

Creare un file di licenza

Quando generi un file di licenza puoi specificare vari dettagli, come l’intestatario, il prodotto, la data di scadenza, le funzionalità consentite e gli eventuali campi personalizzati della licenza. Il file di licenza è firmato digitalmente per garantirne l’integrità e l’autenticità.

Con Babel Desktop

Per creare un file di licenza con Babel Desktop, segui questi passi:

Connettiti al servizio

Apri Babel Desktop e fai clic sull’icona del profilo del tuo Babel Licensing Service nella barra attività. Per generare le licenze serve un profilo Test locale con Gestione locale, quindi esegui Babel Desktop sul computer del servizio; per un servizio remoto usa l’applicazione web o la Management API.

Genera una licenza

Apri la vista Licenze e scegli Genera licenza nella barra degli strumenti.

Seleziona il modello e la chiave di firma

Nel gruppo Modello, seleziona il Modello di licenza (vedi Modelli di licenza) e la Chiave di firma. Se non selezioni una chiave di firma, viene usata quella del modello o del suo prodotto.

Imposta la modalitĂ  su File

Nel gruppo Termini, imposta ModalitĂ  su File. Per una licenza a file non serve una chiave utente.

Inserisci l’intestatario e i dettagli della licenza

Inserisci i dati dell’intestatario (è obbligatorio il nome dell’intestatario o l’azienda), le date di emissione e di scadenza e i Campi e le Funzionalità necessari.

Salva la licenza

Salva il modulo. Il servizio genera e firma la licenza, che compare nella griglia delle licenze.

Esporta il file di licenza

Seleziona la licenza e scegli Esporta chiave di licenza… nella barra degli strumenti. Il file viene salvato nella cartella di esportazione delle licenze configurata nelle impostazioni di Licensing, con l’ID della licenza come nome. Per questo esempio rinominalo ClientFile.licenses o ClientFile.lic.

Con l’edizione Data Center puoi anche generare e scaricare la licenza dalla pagina Licenze dell’applicazione web.

Con la riga di comando lic

Per creare il file di licenza offline, senza il Babel Licensing Service, usa lo strumento da riga di comando lic. Firma la licenza con la stessa chiave che l’applicazione usa per convalidarla; per questo esempio, il file Keys.snk:

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

Ogni opzione è descritta nel Riferimento della riga di comando.

Ora puoi fornire il file di licenza ai tuoi clienti o usarlo per distribuire la licenza in ambienti disconnessi o protetti, in cui il Babel Licensing Service non è accessibile.

Configurare un client

Per abilitare la convalida della licenza tramite un file di licenza, devi integrare la libreria Babel Licensing nella tua applicazione .NET. La libreria fornisce un insieme di API e metodi che facilitano la convalida della licenza. Referenziando la libreria Babel Licensing e inserendo il codice necessario, ti assicuri che la tua applicazione convalidi correttamente il file di licenza.

Per aprire il progetto console di esempio del file di licenza, segui questi passi:

Individua il progetto di esempio

Vai nella posizione in cui è salvato il progetto di esempio del file di licenza.

Copia il file di licenza

Copia il file di licenza ClientFile.licenses nella cartella del progetto.

Apri la soluzione

Fai doppio clic sul file di soluzione ClientFile.sln per aprirlo nel tuo ambiente di sviluppo integrato (IDE) preferito, per esempio Visual Studio.

Controlla il riferimento alla libreria client

Una volta aperto il progetto, assicurati che il riferimento alla libreria client di Babel Licensing sia corretto. Se il riferimento manca, consulta il paragrafo Componenti client per configurare un repository NuGet locale.

Compila la soluzione

Dopo aver verificato i riferimenti, compila la soluzione selezionando l’opzione “Build” o “Rebuild” dal menu dell’IDE.

Esegui l’applicazione

Quando la soluzione è stata compilata correttamente, puoi eseguire l’applicazione in configurazione di debug premendo il pulsante “Start Debugging” o usando la scorciatoia da tastiera del tuo IDE (per esempio F5 in Visual Studio). L’applicazione console di esempio del file di licenza si avvia, convalida il file di licenza e mostra le informazioni sull’intestatario.

Esempio di convalida del file di licenza

Segue il codice sorgente dell’applicazione client:

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); } }

Nel costruttore statico della classe Program, il provider di licenze a file viene registrato tramite BabelFileLicenseProvider. Questo provider si occupa di individuare e convalidare il file di licenza per la classe Program. Per impostazione predefinita, il file di licenza deve avere lo stesso nome dell’assembly, con estensione .licenses o .lic.

Estrarre e proteggere la chiave pubblica

Nel codice di esempio, la proprietà PublicKey contiene la chiave pubblica necessaria per convalidare la firma della licenza. È impostata su un valore specifico estratto dal file Keys.snk.

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

Per estrarre la chiave pubblica dal file Keys.snk, il codice usa il metodo RSASignature.CreateFromKeyFile, passando il nome del file come parametro. Questo metodo crea un oggetto RSASignature che rappresenta la coppia di chiavi contenuta nel file Keys.snk. Poi sull’oggetto RSASignature viene chiamato il metodo ExportKeys con il parametro true per esportare la chiave pubblica. Il metodo restituisce la chiave pubblica sotto forma di stringa.

Il file Keys.snk contiene la chiave privata e non deve essere distribuito con l’applicazione. La chiave privata deve essere custodita in modo sicuro e non deve essere esposta ad accessi non autorizzati.

Usa i file di licenza quando l’applicazione ha una connessione limitata o assente al Babel Licensing Service. Li generi con Babel Desktop o con la riga di comando lic, e sono facili da distribuire e da spostare tra sistemi. Il file firmato mantiene i termini di licenza sotto il tuo controllo anche offline, e la tua applicazione .NET lo convalida senza contattare il servizio.

Convalida della licenza con un gestore di licenze

Oltre a BabelFileLicenseProvider, Babel Licensing offre metodi alternativi per la convalida della licenza, basati su apposite classi di gestione delle licenze. Queste classi, come XmlLicenseManager e StringLicenseManager, danno flessibilitĂ  nel caricamento e nella convalida delle chiavi di licenza, senza dipendere da BabelFileLicenseProvider per trovare il file di licenza.

La classe XmlLicenseManager è pensata per i file di licenza in formato XML. Permette di impostare la chiave pubblica usata per convalidare la firma della licenza e fornisce i metodi per leggere la chiave di licenza da un file XML, convalidarla e ottenere l’oggetto licenza convalidato.

Ecco in dettaglio il frammento di codice:

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 è un’alternativa che permette di convalidare le chiavi di licenza direttamente da una stringa codificata. È utile quando le informazioni della licenza provengono da un’altra origine, come un database o la risposta di un’API.

Entrambe le classi, XmlLicenseManager e StringLicenseManager, offrono modi alternativi di gestire la convalida della licenza e danno flessibilità nel controllo del caricamento e della convalida. Permettono di definire una logica propria per accedere alla chiave di licenza e offrono un mezzo per verificare l’autenticità e l’integrità della licenza con la chiave pubblica specificata.

Last updated on