De plugin interno a producto protegido

Overview

Problema

La empresa tenía un potente plugin interno de Tekla Structures, pero no podía entregarlo a contratistas externos sin poner en riesgo su propiedad intelectual: cualquiera podía copiar las DLL del directorio de Tekla y repartirlas.

Solución

Construimos un sistema de licenciamiento de tres capas:

  • un panel de administración (Blazor),
  • un cliente de escritorio (WPF),
  • un motor de compilación que en cada descarga compila, cifra y firma una copia única del plugin, ligada al identificador de hardware del usuario.
Resultado

Los contratistas trabajan hoy con la misma herramienta que el equipo interno. La empresa decide quién la recibe, en qué máquina y hasta cuándo, todo desde una sola interfaz, y ninguna de las partes necesita confiar a ciegas en la otra.

Antecedentes

El cliente volvió con el plugin de Tekla Structures que habíamos construido juntos antes, el conjunto de herramientas que genera sus paneles LGSF. Al tomar contratos más grandes, el equipo interno ya no daba abasto con el volumen, así que sumar contratistas externos, desde ingenieros individuales hasta empresas completas, era la única vía práctica de crecer. El problema era que el plugin es propietario: distribuirlo sin protección no era una opción. Necesitaban una forma de dar acceso a los contratistas conservando el control total sobre quién usa la herramienta, en qué máquina y por cuánto tiempo.

Problema

Por qué la protección estándar no alcanzaba

Partimos por definir exactamente qué había que proteger y de qué. Una simple clave de serie no sobrevive en este entorno: el plugin corre dentro de Tekla Structures, donde el usuario tiene acceso completo al sistema de archivos, así que los propios ensamblados se pueden copiar y compartir. El licenciamiento tenía que ligar cada copia a una máquina concreta, imponer un límite de tiempo y resistir manipulaciones incluso si el usuario cambiaba el reloj del sistema.

  • El plugin son DLL que viven en el directorio de Tekla Structures, legibles por quien las ejecuta.

  • Una clave de serie no protege nada si los archivos mismos se pueden copiar.

  • Las licencias debían caducar solas, sin confiar en el reloj local.

  • La empresa necesitaba otorgar y revocar accesos por persona y por máquina.

Solución

Diseñamos un sistema de tres capas, cada una a cargo de una parte concreta del flujo de licenciamiento:

1

Servidor: Windows Server con IIS

Guarda las cuentas, las licencias y las fuentes del plugin. Autentica a los usuarios, registra a qué máquina está ligada cada licencia, controla las fechas de vencimiento y ejecuta el proceso de compilación cuando se solicita. Que sea Windows no es un detalle de implementación: el plugin apunta a .NET Framework 4.8, así que la compilación tiene que correr en un host Windows.

2

Cliente: la aplicación LSTK

Una aplicación de escritorio en WPF con la que los usuarios se autentican y descargan el plugin. En el momento de la descarga, envía al servidor la clave de hardware de esa máquina: el número de serie de la placa madre.

3

Motor de compilación y protección

En cada solicitud de descarga el servidor ejecuta un ciclo completo de build: compila el plugin desde el código fuente, lo cifra con claves privadas del lado del servidor y calcula un checksum hash para impedir manipulaciones. Cada copia licenciada se compila de verdad para su usuario, en lugar de salir de un único binario compartido. El resultado es un ensamblado cifrado, ligado a una máquina y con fecha de vencimiento definida.

La aplicación de escritorio LSTK, donde el usuario se autentica y descarga su copia licenciada del plugin

Sistema de licenciamiento LGSF — arquitectura

Arquitectura del sistema de licenciamiento: panel de administración, cliente de escritorio y el servidor que compila y protege cada copia del plugin

Cómo funciona

Desde la cuenta de usuario hasta el plugin funcionando, todo el recorrido son cinco pasos:

1

El administrador crea la cuenta de usuario

El administrador registra al usuario en el panel Blazor y le asigna un tipo de licencia y una duración.

2

El usuario inicia sesión en la aplicación LSTK

El usuario abre la aplicación de escritorio, ingresa sus credenciales y se autentica contra el servidor.

3

La descarga dispara la generación de la licencia

Al hacer clic en Descargar, la aplicación envía al servidor la clave de serie de hardware del computador, y el servidor compila, cifra y firma el plugin, creando una copia única para esa máquina.

4

El plugin se instala en Tekla Structures

El plugin cifrado se coloca directamente en el directorio correcto de Tekla Structures. Funciona solo en ese computador y solo durante el período asignado.

5

Renovación mediante una nueva descarga

Cuando la licencia vence, el usuario vuelve a hacer clic en Descargar en la aplicación LSTK. Si el administrador aprobó la renovación, se genera una copia licenciada nueva.

Pantalla de usuarios y licencias del panel Blazor, con tipo de licencia, equipo asociado, estado y vencimiento por usuario

Flujo de licenciamiento LGSF paso a paso

Flujo de licenciamiento paso a paso, desde la creación de la cuenta hasta la renovación por nueva descarga

Resultado

El plugin pasó de ser un archivo en un pendrive a un producto de software controlado y distribuible. Tras el primer mes de uso:

  • Los contratistas externos reciben la misma herramienta que el equipo interno, sin riesgo de exponer la propiedad intelectual.

  • Cada copia queda ligada criptográficamente a una máquina y caduca por sí sola.

  • Todas las licencias se gestionan desde una única interfaz de administración: quién tiene acceso, en qué equipo y hasta cuándo.

  • Incorporar a un contratista es crear una cuenta y una descarga, no una negociación sobre confianza.

+15%

Capacidad de ingeniería

10

Horas de onboarding ahorradas

Tecnologías

Windows Server con IIS

C#

Blazor Server

WPF

Tekla Open API

Descubre dónde estás perdiendo tiempo y dinero ahora mismo

Edificio moderno