KeyNexus Documentation
Guía completa para implementar el sistema de autenticación y licencias más seguro y flexible del mercado.
Primeros Pasos
Comienza a usar KeyNexus en minutos
Introducción
KeyNexus es un sistema de autenticación y gestión de licencias diseñado para proteger tus aplicaciones de escritorio, web y móviles. Ofrece características avanzadas como:
- Autenticación segura - Login con tokens JWT y encriptación de extremo a extremo
- Sistema de licencias - Generación, validación y gestión de licencias con múltiples tipos
- Bloqueo HWID - Vincula licencias a hardware específico para prevenir piratería
- Gestión de sesiones - Control total sobre sesiones activas y dispositivos
- API RESTful - Integración sencilla con cualquier lenguaje de programación
- Dashboard completo - Panel de administración intuitivo y potente
Inicio Rápido
Paso 1: Obtener credenciales
Ve a tu dashboard, selecciona la aplicación y copia las credenciales de API:
{
"appId": "app_xxxxxxxxxxxx",
"secretKey": "sk_xxxxxxxxxxxxxxxxxxxx"
}Paso 2: Realizar tu primera petición
Usa la API para inicializar la aplicación:
curl -X POST https://keynexus.es/api/client \
-H "Content-Type: application/json" \
-d '{
"action": "init",
"appId": "app_xxxxxxxxxxxx",
"secretKey": "sk_xxxxxxxxxxxxxxxxxxxx"
}'Paso 3: Autenticar usuario
Valida la licencia o credenciales del usuario:
curl -X POST https://keynexus.es/api/client \
-H "Content-Type: application/json" \
-d '{
"action": "license",
"appId": "app_xxxxxxxxxxxx",
"secretKey": "sk_xxxxxxxxxxxxxxxxxxxx",
"key": "XXXXX-XXXXX-XXXXX-XXXXX",
"hwid": "machine_hardware_id"
}'Instalación
KeyNexus ofrece SDKs oficiales para los lenguajes más populares. Selecciona tu lenguaje preferido:
npm install keynexus✅ TypeScript • Browser & Node.js • React • Next.js
Instalación & Descarga
Los SDKs están disponibles públicamente en este servidor. Puedes instalarlos via npm/pip o descargar el código fuente:
/sdks en el navegador para explorar y descargar el código directamente desde este servidor.Configuración Inicial
Después de instalar el SDK, configura las variables de entorno o inicializa directamente:
# .env
KEYNEXUS_APP_ID=app_xxxxxxxxxxxx
KEYNEXUS_SECRET_KEY=sk_xxxxxxxxxxxxxxxxxxxx
KEYNEXUS_API_URL=https://keynexus.es/apiusing KeyNexus;
var client = new KeyNexusClient(new KeyNexusOptions
{
AppId = Environment.GetEnvironmentVariable("KEYNEXUS_APP_ID"),
SecretKey = Environment.GetEnvironmentVariable("KEYNEXUS_SECRET_KEY"),
Version = "1.0.0"
});
// Inicializar la aplicación
var initResult = await client.InitializeAsync();
if (initResult.Success)
{
Console.WriteLine("KeyNexus inicializado correctamente");
Console.WriteLine($"Versión de la app: {initResult.Data.Version}");
}
else
{
Console.WriteLine($"Error: {initResult.Message}");
}Portales de Acceso
Client Portal y Reseller Portal con branding personalizado
Client Portal
Portal web donde tus usuarios finales pueden gestionar sus licencias, ver información de su cuenta y controlar sus sesiones activas.
https://keynexus.es/client/login?app=YOUR_APP_IDTambién funciona sin el parámetro app:
https://keynexus.es/client/loginCaracterísticas del Client Portal
- Branding personalizado: Logo "Client Portal" (client-portal.png) visible en la página de login
- Gestión de licencias: Ver tipo, estado, fecha de expiración y usos restantes
- Control de sesiones: Ver sesiones activas, dispositivos conectados y cerrar sesiones remotas
- Perfil de usuario: Información de la cuenta, HWID vinculado, historial de login
- Auto-logout en suspensión: Si el admin banea al usuario, su sesión se cierra automáticamente y la licencia se revoca
<!-- Envía este link a tus usuarios -->
<a href="https://keynexus.es/client/login?app=app_xxxxxxxxxxxx">
Acceder a tu cuenta
</a>
<!-- O sin especificar app (usuario ingresa el ID manualmente) -->
<a href="https://keynexus.es/client/login">
Portal de Cliente
</a>SEO y Metadata
El Client Portal incluye metadata optimizada para SEO y redes sociales:
- • Título: "Client Portal Login - KeyNexus"
- • Descripción: "Access your client portal. Sign in to manage your license, view sessions, and access your protected software."
- • Open Graph imagen: /client-portal.png (1200x630px)
- • Twitter Card: summary_large_image
Reseller Portal
Portal dedicado para revendedores autorizados que pueden gestionar licencias asignadas, usuarios y configuraciones según los permisos otorgados.
https://keynexus.es/reseller/loginCaracterísticas del Reseller Portal
- Branding personalizado: Logo "Reseller Portal" (reseller.png) visible en la página de login
- Gestión de licencias asignadas: Ver y administrar solo las licencias asignadas por el admin
- Control de usuarios: Asignar licencias a usuarios finales (si tiene permiso)
- Reset HWID: Desvincular dispositivos de licencias (con permiso)
- Blacklist/Whitelist: Gestionar listas de bloqueo por IP o HWID (con permiso)
- Logs y auditoría: Ver registros de actividad de sus licencias (con permiso)
- Auto-logout en suspensión: Si el admin suspende al reseller, su sesión se cierra automáticamente
Sistema de Permisos
El admin puede controlar qué funcionalidades tiene cada reseller:
SEO y Metadata
El Reseller Portal incluye metadata optimizada para SEO y redes sociales:
- • Título: "Reseller Portal Login - KeyNexus"
- • Descripción: "Access the reseller portal. Sign in to manage your assigned licenses, users, and reseller account."
- • Open Graph imagen: /reseller.png (1200x630px)
- • Twitter Card: summary_large_image
<!-- Link que puedes enviar a tus resellers -->
<a href="https://keynexus.es/reseller/login">
Portal de Reseller - Iniciar Sesión
</a>
<!-- Desde el dashboard admin, puedes copiar y compartir este link -->Personalización de Branding
Cada portal muestra su propia imagen de branding en la página de login. Las imágenes están ubicadas en /public:
/public/client-portal.png/client/login/public/reseller.png/reseller/login/public y están accesibles públicamente. Asegúrate de que tengan las dimensiones correctas para una visualización óptima en diferentes dispositivos.Autenticación
Sistema de login y gestión de sesiones
Visión General
KeyNexus soporta múltiples métodos de autenticación para adaptarse a diferentes casos de uso:
Login con Licencia
El usuario ingresa una clave de licencia válida. Ideal para software de pago único.
Login con Usuario/Contraseña
Autenticación tradicional con email/usuario y contraseña. Ideal para SaaS.
Login con HWID
Autenticación automática basada en el hardware del dispositivo. Sin contraseñas.
Login Combinado
Combina licencia + HWID para máxima seguridad y prevención de compartir cuentas.
Flujo de Login
Inicializar Aplicación
El cliente envía applicationId y version al servidor para validar que la app esté activa.
Verificar Blacklist/Whitelist
Se verifica que la IP y HWID del usuario no estén bloqueados.
Validar Credenciales
Se valida la licencia, usuario/contraseña y se verifica el HWID si está configurado.
Crear Sesión
Se genera un token JWT y se registra la sesión en la base de datos.
// Login con licencia
var loginResult = await KeyNexus.LoginWithLicenseAsync(new LicenseLoginRequest
{
LicenseKey = "XXXXX-XXXXX-XXXXX-XXXXX",
Hwid = HardwareInfo.GetHwid() // Obtener HWID del sistema
});
if (loginResult.Success)
{
// Usuario autenticado
Console.WriteLine($"Bienvenido, {loginResult.Data.User.Username}");
Console.WriteLine($"Licencia expira: {loginResult.Data.User.SubscriptionExpiry}");
// Guardar token para futuras peticiones
KeyNexus.SetSessionToken(loginResult.Data.SessionToken);
}
else
{
switch (loginResult.ErrorCode)
{
case "INVALID_LICENSE":
Console.WriteLine("Licencia inválida o expirada");
break;
case "HWID_MISMATCH":
Console.WriteLine("Esta licencia está vinculada a otro dispositivo");
break;
case "USER_BANNED":
Console.WriteLine("Tu cuenta ha sido suspendida");
break;
default:
Console.WriteLine($"Error: {loginResult.Message}");
break;
}
}Tokens JWT
KeyNexus utiliza JSON Web Tokens (JWT) para mantener la sesión del usuario de forma segura. El token contiene:
{
"sub": "user_xxxxxxxxxxxx", // ID del usuario
"app": "app_xxxxxxxxxxxx", // ID de la aplicación
"hwid": "abc123def456...", // HWID del dispositivo
"sess": "sess_xxxxxxxxxxxx", // ID de la sesión
"exp": 1735689600, // Fecha de expiración (Unix timestamp)
"iat": 1735603200, // Fecha de emisión
"iss": "KeyNexus" // Emisor del token
}// El SDK maneja automáticamente la validación del token
var userData = await KeyNexus.GetUserDataAsync();
if (userData.Success)
{
Console.WriteLine($"Sesión válida para: {userData.Data.Username}");
Console.WriteLine($"Días restantes: {userData.Data.DaysRemaining}");
}
else if (userData.ErrorCode == "TOKEN_EXPIRED")
{
// Re-autenticar usuario
Console.WriteLine("La sesión ha expirado. Por favor, inicia sesión de nuevo.");
}Gestión de Sesiones
KeyNexus registra y permite gestionar todas las sesiones activas de un usuario:
| Campo | Tipo | Descripción |
|---|---|---|
| sessionId | string | Identificador único de la sesión |
| hwid | string | Hardware ID del dispositivo |
| ip | string | Dirección IP del usuario |
| location | object | País, ciudad del usuario (geolocalización) |
| createdAt | Date | Fecha/hora de inicio de sesión |
| lastActivity | Date | Última actividad registrada |
| status | string | active, expired, revoked |
// Obtener todas las sesiones del usuario
var sessions = await KeyNexus.GetUserSessionsAsync();
foreach (var session in sessions.Data)
{
Console.WriteLine($"Sesión: {session.Id}");
Console.WriteLine($" IP: {session.Ip}");
Console.WriteLine($" Ubicación: {session.Location.City}, {session.Location.Country}");
Console.WriteLine($" Última actividad: {session.LastActivity}");
}
// Terminar una sesión específica
await KeyNexus.RevokeSessionAsync("sess_xxxxxxxxxxxx");
// Terminar todas las sesiones excepto la actual
await KeyNexus.RevokeAllSessionsExceptCurrentAsync();Sistema de Licencias
Generación, validación y gestión de licencias
Tipos de Licencias
Lifetime (Vitalicia)
Sin fecha de expiración. El usuario tiene acceso permanente.
Time-Based (Temporal)
Expira después de X días/horas desde la activación.
Subscription (Suscripción)
Se renueva automáticamente. Ideal para modelos SaaS.
Multi-uso
Permite múltiples activaciones por licencia.
¿Cómo funciona maxUses?
El campo maxUses controla cuántas veces puede ser activada una licencia en diferentes dispositivos/HWIDs:
| maxUses | Comportamiento |
|---|---|
| 1 | Solo puede activarse en 1 dispositivo. Una vez que un HWID la usa, queda bloqueada. |
| 5 | Hasta 5 dispositivos diferentes. Útil para usuarios con PC en casa y oficina. |
| 0 o null | Usos ilimitados - cualquier cantidad de dispositivos. |
• HWID Lock (en settings): Una vez activada, SOLO ese HWID puede usarla permanentemente.
• maxUses: Cuántos HWIDs diferentes pueden activarla.
Con
maxUses: 1 + HWID Lock: true = máxima protección: 1 dispositivo, permanentemente vinculado.Generación de Licencias
# Generar una licencia de 30 días
curl -X POST https://keynexus.es/api/licenses/generate \
-H "Content-Type: application/json" \
-H "Cookie: token=<tu-session-token>" \
-d '{
"applicationId": "<mongodb-object-id>",
"type": "time-based",
"duration": 30,
"quantity": 1,
"prefix": "PREMIUM"
}'
# Respuesta
{
"success": true,
"message": "1 licencia(s) generada(s)",
"licenses": [
{
"_id": "69323ae1ef49b4fe949c8312",
"key": "PREMIUM-H8OEL-MR2B7-JIJ5Q",
"type": "time-based",
"duration": 30,
"maxUses": 1,
"status": "unused"
}
]
}Formatos de licencia soportados:
XXXXX-XXXXX-XXXXX-XXXXXFormato estándar (20 caracteres)
PREFIX-XXXXX-XXXXX-XXXXXCon prefijo personalizado
xxxx-xxxx-xxxx-xxxx-xxxxMinúsculas (más fácil de leer)
PersonalizadoDefine tu propio patrón
Validación de Licencias
El proceso de validación verifica múltiples aspectos de la licencia:
# Validar licencia desde tu aplicación
curl -X POST https://keynexus.es/api/client \
-H "Content-Type: application/json" \
-d '{
"action": "license",
"appId": "Loi0W4jxVWVcnXqy",
"secretKey": "pjJrdQxtbLLcCLIMsyVZ2iHVMZsm9ZEE",
"key": "R4KEH-1CXTK-XTOJJ-TKVVF",
"hwid": "TU-HWID-REAL-DEL-SISTEMA"
}'
# Respuesta exitosa
{
"success": true,
"message": "Licencia válida",
"license": {
"type": "lifetime", // o "time-based"
"expiresAt": null, // null para lifetime
"daysLeft": null // null para lifetime
}
}
# Respuesta de error
{
"success": false,
"message": "HWID no autorizado"
}// 1. Obtener HWID del sistema
string hwid = GetHWID(); // Ver sección avanzada para implementación
// 2. Validar licencia
var response = await httpClient.PostAsJsonAsync("/api/client", new {
action = "license",
appId = "tu-app-id",
secretKey = "tu-secret-key",
key = licenseKeyTextBox.Text,
hwid = hwid
});
var result = await response.Content.ReadFromJsonAsync<LicenseResponse>();
if (result.Success)
{
// Licencia válida - permitir acceso
MessageBox.Show($"Bienvenido! Licencia: {result.License.Type}");
if (result.License.DaysLeft.HasValue)
MessageBox.Show($"Días restantes: {result.License.DaysLeft}");
}
else
{
// Error - mostrar mensaje
MessageBox.Show(result.Message); // "HWID no autorizado", "Licencia expirada", etc.
}Administración de Licencias
Operaciones disponibles para gestionar licencias desde el dashboard o API:
| Operación | Endpoint | Descripción |
|---|---|---|
| Listar | GET /licenses | Obtener todas las licencias con filtros |
| Crear | POST /licenses | Generar nuevas licencias |
| Extender | PATCH /licenses/:id/extend | Añadir tiempo a una licencia |
| Revocar | DELETE /licenses/:id | Desactivar una licencia |
| Reset HWID | POST /licenses/:id/reset-hwid | Desvincular del hardware actual |
| Transferir | POST /licenses/:id/transfer | Transferir a otro usuario |
Continúa explorando las secciones en el menú lateral →