Skip to Content
Nueva versión 12 disponible 🎉

Archivo de licencia

Los archivos de licencia controlan las licencias de software en entornos desconectados o protegidos, en los que la aplicación puede no tener acceso al Babel Licensing Service. Un archivo de licencia se puede crear de dos maneras:

Esta página muestra cómo crear un archivo de licencia y cómo validarlo en su aplicación .NET.

Requisitos previos

El Babel Licensing Service solo es necesario si crea el archivo de licencia en el servicio. En ese caso, asegúrese de que el Babel Licensing Service está en funcionamiento en su servidor, según las instrucciones de la sección Primeros pasos. Después, cree un producto de prueba y la plantilla de licencia correspondiente siguiendo las instrucciones que se dan más abajo. Si genera el archivo de licencia sin conexión con lic, puede omitir este paso.

A continuación, descargue de GitHub el código fuente del cliente de archivo de licencia. Este código de cliente permite integrar los archivos de licencia en su aplicación .NET. Use el comando siguiente para clonar el repositorio:

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

Cuando el archivo de licencia se crea en el Babel Licensing Service, se basa en la plantilla de licencia correspondiente.

Crear un archivo de licencia

Al generar un archivo de licencia puede especificar distintos datos, como el titular de la licencia, el producto, la fecha de caducidad, las funciones permitidas y cualquier campo de licencia personalizado. El archivo de licencia se firma digitalmente para garantizar su integridad y su autenticidad.

Con Babel Desktop

Para crear un archivo de licencia con Babel Desktop, siga estos pasos:

Conectarse al servicio

Abra Babel Desktop y haga clic en el icono del perfil de su Babel Licensing Service en la barra de actividad. Para generar licencias se necesita un perfil Prueba local con Gestión local, así que ejecute Babel Desktop en el equipo del servicio; para un servicio remoto, use la aplicación web o la Management API.

Generar una licencia

Abra la vista Licencias y elija Generar licencia en la barra de herramientas.

Seleccionar la plantilla y la clave de firma

En el grupo Plantilla, seleccione la Plantilla de licencia (consulte Plantillas de licencia) y la Clave de firma. Si no se selecciona ninguna clave de firma, se usa la de la plantilla o la de su producto.

Establecer el modo en Archivo

En el grupo Términos, establezca Modo en Archivo. Una licencia de archivo no necesita clave de usuario.

Introducir el titular y los datos de la licencia

Introduzca los datos del titular de la licencia (es obligatorio el nombre del titular o la empresa), las fechas de emisión y de caducidad, y los Campos y las Funciones que necesite.

Guardar la licencia

Guarde el formulario. El servicio genera y firma la licencia, que aparece en la cuadrícula de licencias.

Exportar el archivo de licencia

Seleccione la licencia y elija Exportar clave de licencia… en la barra de herramientas. El archivo se guarda en la carpeta de exportación de licencias configurada en los ajustes de Gestión de licencias, con el id de la licencia como nombre. Para este ejemplo, cámbiele el nombre a ClientFile.licenses o ClientFile.lic.

Con la edición Data Center también puede generar y descargar la licencia en la página Licencias de la aplicación web.

Con la línea de comandos lic

Para crear el archivo de licencia sin conexión, sin el Babel Licensing Service, use la herramienta de línea de comandos lic. Firme la licencia con la misma clave que la aplicación usa para validarla; en este ejemplo, el archivo Keys.snk:

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

Todas las opciones se describen en la Referencia.

Ahora puede distribuir el archivo de licencia a sus clientes, o usarlo para desplegar la licencia en entornos desconectados o protegidos en los que el Babel Licensing Service no es accesible.

Configurar un cliente

Para habilitar la validación de licencias mediante un archivo de licencia, debe integrar la biblioteca de Babel Licensing en su aplicación .NET. La biblioteca proporciona un conjunto de API y métodos que facilitan el proceso de validación de la licencia. Al hacer referencia a la biblioteca de Babel Licensing e incorporar el código necesario, se asegura de que su aplicación valide correctamente el archivo de licencia.

Para abrir el proyecto de ejemplo de consola de archivo de licencia, siga estos pasos:

Localizar el proyecto de ejemplo

Vaya a la ubicación donde está guardado el proyecto de ejemplo de archivo de licencia.

Copiar el archivo de licencia

Copie el archivo de licencia ClientFile.licenses en la carpeta del proyecto.

Abrir la solución

Haga doble clic en el archivo de solución ClientFile.sln para abrirlo en el entorno de desarrollo integrado (IDE) que prefiera, por ejemplo Visual Studio.

Comprobar la referencia a la biblioteca cliente

Con el proyecto abierto, compruebe que la referencia a la biblioteca cliente de Babel Licensing es correcta. Si falta la referencia, consulte el apartado Componentes de cliente para configurar un repositorio NuGet local.

Compilar la solución

Una vez comprobadas las referencias, compile la solución con la opción «Build» (compilar) o «Rebuild» (recompilar) del menú del IDE.

Ejecutar la aplicación

Cuando la solución se haya compilado correctamente, puede ejecutar la aplicación en la configuración de depuración con el botón «Start Debugging» (iniciar depuración) o con el método abreviado de teclado de su IDE (por ejemplo, F5 en Visual Studio). Se inicia la aplicación de consola de ejemplo de archivo de licencia, que valida el archivo de licencia y muestra los datos del titular.

Ejemplo de validación de un archivo de licencia

A continuación se muestra el código fuente de la aplicación 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); } }

Dentro del constructor estático de la clase Program, se registra el proveedor de licencias de archivo mediante BabelFileLicenseProvider. Este proveedor se encarga de localizar y validar el archivo de licencia de la clase Program. De forma predeterminada, el archivo de licencia debe tener el mismo nombre que el ensamblado, con la extensión .licenses o .lic.

Extraer y proteger la clave pública

En el código anterior, la propiedad PublicKey contiene la clave pública necesaria para validar la firma de la licencia. Tiene asignado un valor concreto, extraído del archivo Keys.snk.

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

Para extraer la clave pública del archivo Keys.snk, el código usa el método RSASignature.CreateFromKeyFile y le pasa el nombre del archivo como parámetro. Este método crea un objeto RSASignature que representa el par de claves almacenado en el archivo Keys.snk. Después se llama al método ExportKeys del objeto RSASignature con el parámetro true para exportar la clave pública. Este método devuelve la clave pública representada como una cadena.

El archivo Keys.snk contiene la clave privada y no debe desplegarse con la aplicación. La clave privada debe mantenerse protegida y fuera del alcance de accesos no autorizados.

Use los archivos de licencia cuando la aplicación tenga una conexión limitada o nula con el Babel Licensing Service. Se generan con Babel Desktop o con la línea de comandos lic, y son fáciles de desplegar y de trasladar de un sistema a otro. El archivo firmado mantiene los términos de la licencia bajo su control incluso sin conexión, y su aplicación .NET lo valida sin ponerse en contacto con el servicio.

Validación de licencias con el administrador de licencias

Además de BabelFileLicenseProvider, Babel Licensing ofrece métodos alternativos para validar licencias con clases específicas de administrador de licencias. Estas clases, como XmlLicenseManager y StringLicenseManager, dan flexibilidad para gestionar la carga y la validación de las claves de licencia sin depender de BabelFileLicenseProvider para localizar el archivo de licencia.

La clase XmlLicenseManager está diseñada para trabajar con archivos de licencia basados en XML. Permite definir la clave pública con la que se valida la firma de la licencia y ofrece métodos para leer la clave de licencia de un archivo XML, validarla y obtener el objeto de licencia validado.

A continuación se muestra el fragmento de código, comentado con más detalle:

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 clase StringLicenseManager es otra opción, que permite validar las claves de licencia directamente a partir de una cadena codificada. Resulta útil cuando la información de la licencia procede de otro origen, como una base de datos o la respuesta de una API.

Tanto XmlLicenseManager como StringLicenseManager ofrecen formas alternativas de gestionar la validación de licencias y dan flexibilidad para controlar el proceso de carga y de validación. Permiten definir una lógica propia para acceder a la clave de licencia y proporcionan un medio para verificar la autenticidad y la integridad de la licencia con la clave pública especificada.

Last updated on