Patrones Avanzados de Autenticación — OAuth 2.0, JWT, Rotación de Claves

Domina mecanismos sofisticados de autenticación para integrar Smart Money API en entornos empresariales. Aprende flujos de OAuth 2.0, patrones de tokens JWT, rotación segura de claves e implementación de autenticación multifactor.

Publicado el 21 de marzo de 2026 18 minutos de lectura Avanzado

Resumen de Autenticación

La API de Smart Money admite múltiples métodos de autenticación diseñados para adaptarse a diferentes arquitecturas de aplicaciones, requisitos de seguridad y políticas organizacionales. Comprender estos patrones asegura que tu integración sea segura y eficiente.

La autenticación en la API de Smart Money opera en tres capas principales:

  • Claves API — Autenticación simple con token bearer para desarrollo e integraciones directas
  • Tokens JWT — Tokens sin estado y firmados criptográficamente para sistemas distribuidos y microservicios
  • OAuth 2.0 — Marco de autorización delegada para integraciones de terceros y aplicaciones SaaS

Principio de Seguridad: Nunca expongas credenciales de autenticación en código del lado del cliente, registros, control de versiones o mensajes de error. Implementa la rotación de credenciales según un cronograma e inmediatamente en caso de compromiso.

Cada método tiene ventajas distintas. Las claves API funcionan mejor para la comunicación backend-to-backend donde el almacenamiento de credenciales está controlado. Los tokens JWT destacan en arquitecturas distribuidas donde no hay estado compartido. OAuth 2.0 proporciona acceso delegado por el usuario para aplicaciones de terceros.

Autenticación con Clave API

Las claves API son el mecanismo de autenticación más simple: son cadenas aleatorias generadas para tu cuenta que identifican tu aplicación ante la API de Smart Money. Cada solicitud debe incluir tu clave API, ya sea como encabezado o parámetro de consulta.

Clave API Basada en Encabezado

El enfoque recomendado es pasar tu clave API en el encabezado Authorization usando el esquema Bearer:

Ejemplo de curl
curl -X GET "https://api.smartmoneyapi.com/v1/whales/btc" \
-H "Authorization: Bearer sk_live_1234567890abcdef" \
-H "Accept: application/json"

Clave API como Parámetro de Consulta

Para conexiones WebSocket o cuando no se pueden modificar los encabezados, pasa la clave API como parámetro de consulta:

Conexión WebSocket
ws://localhost:8877/ws?api_key=sk_live_1234567890abcdef
// Establece un flujo WebSocket autenticado

Características de la Clave API

Propiedad Descripción
Formato Cadena hexadecimal de 128 caracteres con prefijo sk_test_ o sk_live_
Alcance Hereda todos los permisos de la cuenta que la creó
Expiración No expira automáticamente; debe rotarse manualmente
Rotación Genera una nueva clave, migra el tráfico y luego desactiva la clave antigua
Límites de Tasa Compartidos en todas las solicitudes que usan la misma clave

Prácticas de Seguridad de Claves API

  • Variables de Entorno — Almacena las claves en archivos .env (no comprometidos en el control de versiones) y cárgalas en tiempo de ejecución
  • Sistemas de Bóveda — Usa HashiCorp Vault, AWS Secrets Manager o Azure Key Vault en producción
  • Claves Separadas — Mantén claves de prueba y producción separadas; rota las claves de prueba con frecuencia
  • Alcance Mínimo — Crea claves separadas para diferentes integraciones cuando sea posible
  • Registro de Auditoría — Registra todos los eventos de creación y uso de claves API
Obtén tu clave API en 30 segundos

¿Listo para construir? Obtén una clave API gratuita (200 llamadas/día, sin tarjeta) y comienza a obtener datos en vivo de ballenas, financiamiento y cadena de bloques.

Obtén tu clave API →

Patrón de Token Bearer

Los tokens bearer extienden el concepto simple de clave API al agregar contexto, expiración y mecanismos de actualización. Son ideales para aplicaciones que necesitan gestión programática de credenciales.

Obtención de Tokens Bearer

Intercambia tu clave API y secreto por un token bearer válido por 24 horas:

GET /auth/token
curl -X POST "https://api.smartmoneyapi.com/v1/auth/token" \
-H "Content-Type: application/json" \
-d '{
"api_key": "sk_live_1234567890",
"api_secret": "secret_abc123xyz"
}'

Formato de Respuesta del Token

El endpoint devuelve un token bearer con metadatos:

Respuesta
{
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"token_type": "Bearer",
"expires_in": 86400,
"refresh_token": "refresh_1234567..."
}

Uso de Tokens Bearer

Incluye el token en el encabezado Authorization para todas las solicitudes posteriores:

Solicitud Autenticada
curl -X GET "https://api.smartmoneyapi.com/v1/derivatives/funding-heatmap" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

Flujo de Actualización de Token

Cuando un token está cerca de expirar, usa el token de actualización para obtener uno nuevo sin requerir tu secreto API:

POST /auth/refresh
curl -X POST "https://api.smartmoneyapi.com/v1/auth/refresh" \
-H "Content-Type: application/json" \
-d '{
"refresh_token": "refresh_1234567..."
}'

Implementación de OAuth 2.0

OAuth 2.0 permite a los usuarios otorgar acceso a sus cuentas de Smart Money API a aplicaciones sin compartir credenciales. Esto es esencial para plataformas SaaS, integraciones de terceros y aplicaciones multiinquilino.

Flujo de Código de Autorización de OAuth 2.0

El flujo estándar para aplicaciones web:

  1. El Usuario Inicia el Inicio de Sesión — El usuario hace clic en "Conectar con Smart Money API"
  2. Redirección al Servidor de Autorización — Tu aplicación redirige al usuario al endpoint de autorización de Smart Money
  3. El Usuario Otorga Permiso — El usuario revisa los alcances solicitados y otorga acceso
  4. Código de Autorización Devuelto — El usuario es redirigido de vuelta con el código de autorización
  5. Intercambio de Código por Token — El backend intercambia el código por un token de acceso (el código nunca se expone al frontend)
  6. Almacenamiento del Token — Almacena el token de actualización de forma segura; usa el token de acceso para las llamadas API

Paso 1: Redirigir al usuario al punto de autorización

Redirección del Frontend
// URL para redirigir al usuario
const authUrl = new URL('https://api.smartmoneyapi.com/oauth/authorize');
authUrl.searchParams.append('client_id', 'your_client_id');
authUrl.searchParams.append('redirect_uri', 'https://yourapp.com/callback');
authUrl.searchParams.append('response_type', 'code');
authUrl.searchParams.append('scope', 'whales derivatives onchain');
authUrl.searchParams.append('state', generateRandomState());
window.location.href = authUrl.toString();

Paso 2: Manejar la devolución de llamada e intercambiar el código

Intercambio de Código en el Backend
// El backend maneja la ruta /callback
const code = req.query.code;
const storedState = req.session.state;
const receivedState = req.query.state;
// Verificar el parámetro state
if (storedState !== receivedState) {
throw new Error('State mismatch - CSRF attack detected');
}
// Intercambiar el código por un token
const tokenResponse = await fetch('https://api.smartmoneyapi.com/oauth/token', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
grant_type: 'authorization_code',
code: code,
client_id: process.env.OAUTH_CLIENT_ID,
client_secret: process.env.OAUTH_CLIENT_SECRET,
redirect_uri: 'https://yourapp.com/callback'
})
});
const tokens = await tokenResponse.json();
// Almacenar los tokens de forma segura

Ámbitos de OAuth

Solicita solo los ámbitos que tu aplicación necesita. Smart Money API define estos ámbitos:

Ámbito Descripción
whales Acceso al seguimiento de carteras de ballenas y métricas de acumulación
derivatives Acceso a datos de futuros, perpetuos y tasas de financiación
onchain Acceso a flujos de transacciones y análisis en cadena
alerts Crear y gestionar alertas mediante webhooks
offline Acceso a tokens de actualización para obtener nuevos tokens de acceso sin conexión

Gestión de Tokens JWT

Los JWT (JSON Web Tokens) proporcionan autenticación sin estado: el servidor no necesita almacenar datos de sesión. Smart Money API utiliza RS256 (Firma RSA con SHA-256) para la firma de tokens, permitiendo la verificación sin contactar con la API.

Estructura del JWT

Los tokens JWT constan de tres partes separadas por puntos:

Formato del JWT
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjEifQ.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFjY3QxMjM0In0.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
// CABECERA.PAYLOAD.FIRMA

Cabecera del JWT

La cabecera identifica el algoritmo y el tipo de token:

Cabecera Decodificada
{
"alg": "RS256",
"typ": "JWT",
"kid": "1"
}

Reclamaciones del Payload del JWT

El payload contiene reclamaciones (declaraciones sobre el usuario/aplicación):

Payload Decodificado
{
"sub": "acct_1234567890",
"name": "Trading Bot",
"iat": 1703001600,
"exp": 1703088000,
"scopes": ["whales", "derivatives"],
"aud": "https://api.smartmoneyapi.com"
}

Verificación de Firmas JWT

Descarga la clave pública de Smart Money y verifica los tokens antes de aceptarlos:

Verificación en Node.js
const jwt = require('jsonwebtoken');
const fs = require('fs');
// Obtener la clave pública de Smart Money API
const publicKey = fs.readFileSync('smartmoney-public.pem');
// Verificar el token
try {
const decoded = jwt.verify(token, publicKey, {
algorithms: ['RS256'],
audience: 'https://api.smartmoneyapi.com',
issuer: 'https://api.smartmoneyapi.com'
});
// El token es válido, usa las reclamaciones decodificadas
} catch (err) {
// Token inválido o expirado
}

Estrategia de Rotación de Claves

La rotación regular de claves es crucial para mantener la seguridad. Incluso con prácticas de seguridad perfectas, asume que las claves pueden verse comprometidas e implementa una rotación sistemática.

Frecuencia de Rotación

Smart Money recomienda diferentes cronogramas de rotación según el tipo de clave y su uso:

Tipo de Clave Rotación Recomendada Rotación Mínima
Claves API de Prueba Mensual Trimestral
Claves API de Producción Trimestral Anual
Tokens de Actualización de OAuth Automática (después de 90 días) Manual (después de 180 días)
Claves de Cuentas de Servicio Semestral Anual

Proceso de Rotación sin Tiempo de Inactividad

Rota las claves sin interrumpir el servicio:

  1. Generar Nueva Clave — Crear una nueva clave API a través del panel o la API
  2. Implementar Nueva Clave — Actualizar los secretos de la aplicación en staging, probar exhaustivamente
  3. Implementación Gradual — Implementar en el 10% de los servidores, monitorear errores
  4. Implementación Completa — Desplegar en los servidores restantes
  5. Verificar Tráfico — Confirmar que todas las solicitudes usen la nueva clave
  6. Desactivar Clave Antigua — Marcar la clave antigua como inactiva pero no eliminarla inmediatamente
  7. Eliminar Clave Antigua — Después de 48 horas sin errores, eliminar permanentemente

Rotación de Clave de Emergencia

Si sospechas que una clave está comprometida:

Rotación de Emergencia
// Acción inmediata: Desactivar clave comprometida
curl -X POST "https://api.smartmoneyapi.com/v1/keys/sk_live_xxx/revoke" \
-H "Authorization: Bearer token"
// Generar clave de reemplazo inmediatamente
curl -X POST "https://api.smartmoneyapi.com/v1/keys" \
-H "Content-Type: application/json" \
-d '{
"name": "Clave de Reemplazo de Emergencia"
}'

Rotación Automatizada en Kubernetes

Usa Secrets y operadores de Kubernetes para rotación automática:

CronJob para Rotación de Claves
apiVersion: batch/v1
kind: CronJob
metadata:
name: api-key-rotator
spec:
schedule: "0 0 * * 0" # Semanalmente los domingos
jobTemplate:
spec:
template:
spec:
containers:
- name: rotator
image: smartmoney-key-rotator:latest

Autenticación Multifactor (MFA)

Para cuentas que acceden a datos de producción, MFA proporciona una capa adicional de seguridad al requerir un segundo factor además de las credenciales.

Métodos MFA Soportados

  • TOTP (Contraseña de Un Solo Uso Basada en Tiempo) — Aplicaciones como Google Authenticator, Authy
  • WebAuthn/FIDO2 — Claves de seguridad físicas, biometría
  • Códigos de Un Solo Uso por SMS — Menos seguros pero universalmente soportados
  • Confirmación por Correo Electrónico — Códigos de confirmación enviados al correo registrado

Habilitar TOTP para Acceso a la Cuenta

Habilitar MFA
// Paso 1: Solicitar configuración de MFA
curl -X POST "https://api.smartmoneyapi.com/v1/account/mfa/enable" \
-H "Authorization: Bearer token"
// La respuesta incluye URL de código QR
{
"qr_code_url": "https://...",
"secret": "JBSWY3DPEBLW64TMMQ...",
"backup_codes": ["12345678", ...]
}

MFA Durante Operaciones de API

Algunas operaciones pueden requerir confirmación MFA incluso después de la autenticación:

Desafío MFA
// Intentando operación sensible (rotación de clave)
curl -X POST "https://api.smartmoneyapi.com/v1/keys/rotate" \
-H "Authorization: Bearer token" \
-H "X-MFA-Token: mfa_challenge_abc123"
// Respuesta: MFA requerido
{
"error": "mfa_required",
"mfa_token": "mfa_xyz789"
}
// Reintentar con código TOTP
curl -X POST "https://api.smartmoneyapi.com/v1/keys/rotate" \
-H "Authorization: Bearer token" \
-H "X-MFA-Code: 123456"

Mejores Prácticas de Seguridad

La autenticación es tan fuerte como su implementación. Sigue estas prácticas para mantener la seguridad:

Gestión de Secretos

  • Nunca guardes secretos en control de versiones — Usa archivos .env con .gitignore
  • Usa variables de entorno — Carga desde sistemas seguros de gestión de secretos
  • Escanea repositorios — Usa herramientas como TruffleHog, detect-secrets para encontrar claves expuestas
  • Audita registros de acceso — Monitorea quién accedió a los secretos y cuándo

Seguridad en el Transporte

  • Siempre usa HTTPS — Nunca envíes credenciales sobre conexiones no cifradas
  • Verifica certificados SSL — No deshabilites la validación de certificados en producción
  • Usa fijación de certificados — Para aplicaciones móviles, evita ataques MITM
  • Exige TLS 1.2+ — Deshabilita protocolos antiguos

Manejo de Credenciales

  • Hashea los secretos — Almacena hashes bcrypt o Argon2, nunca texto plano
  • Minimiza el tiempo de vida — Mantén credenciales en memoria solo el tiempo necesario
  • Borra datos sensibles — Sobrescribe credenciales explícitamente después de usarlas
  • Usa bibliotecas seguras — No implementes criptografía tú mismo

Registro y Monitoreo

  • Nunca registres credenciales — Enmascara claves en registros, usa enmascaramiento de logs
  • Registra eventos de autenticación — Rastrea intentos de inicio de sesión exitosos y fallidos
  • Monitorea anomalías — Alerta sobre patrones de acceso inusuales
  • Audita el uso de claves — Rastrea qué claves accedieron a qué datos

Patrones de Autenticación Empresarial

Las grandes organizaciones a menudo requieren controles de seguridad adicionales y capacidades de cumplimiento.

Integración SAML 2.0

Para clientes empresariales, Smart Money API soporta integración SAML 2.0 con el proveedor de identidad de tu organización (Okta, Azure AD, etc.):

  • Inicio de Sesión Único (SSO) — Los usuarios se autentican a través del IdP corporativo
  • Aprovisionamiento automático — Crea/desactiva cuentas basadas en membresía de grupos
  • Exigencia — Requiere SAML para todo acceso de usuario

Lista Blanca de IP

Restringir el acceso a la API a direcciones IP o rangos CIDR específicos:

Gestión de Lista Blanca de IP
// Añadir IP a la lista blanca
curl -X POST "https://api.smartmoneyapi.com/v1/account/ip-whitelist" \
-H "Authorization: Bearer token" \
-d '{
"cidr": "203.0.113.0/24",
"description": "Servidores de producción"
}'

Registro de Auditoría y Cumplimiento

Los planes empresariales incluyen registros de auditoría completos para cumplimiento:

Evento Datos Registrados
Autenticación Usuario, fecha y hora, éxito/fallo, IP, estado de MFA
Operaciones con Claves ID de clave, acción, iniciador, fecha y hora
Cambios en la Cuenta Qué cambió, quién lo cambió, fecha y hora, valores antes/después
Acceso a Datos Usuario, endpoint, alcances, fecha y hora, cantidad de registros

Solución de Problemas de Autenticación

Error de Clave de API Inválida

Problema: Recibiendo "401 No Autorizado - Clave de API Inválida"

Soluciones:

  • Verificar el formato de la clave (debe comenzar con sk_test_ o sk_live_)
  • Comprobar espacios en blanco al inicio/final de la clave
  • Confirmar que la clave no ha sido desactivada o rotada
  • Verificar que estás usando el entorno correcto (clave de prueba para test, clave real para producción)
  • Comprobar que los permisos de la clave de API coinciden con los requisitos del endpoint

Error de Token Expirado

Problema: Token de portador expirado, solicitudes fallando

Soluciones:

  • Usar token de actualización para obtener nuevo token de acceso
  • Implementar actualización automática de token 5 minutos antes de la expiración
  • Almacenar token de actualización de forma segura (no en localStorage para SPAs)
  • Manejar respuestas 401 intentando el flujo de token de actualización

Errores CORS/Preflight

Problema: Navegador bloqueando solicitudes con error CORS

Soluciones:

  • Las llamadas a la API desde navegadores deben venir de orígenes permitidos
  • Añade tu dominio en el panel: Configuración → Orígenes CORS
  • El navegador envía automáticamente una solicitud OPTIONS preflight
  • Para desarrollo, usa localhost:3000 o similar

Desafío MFA No se Completa

Problema: Operaciones que requieren MFA fallan incluso con código correcto

Soluciones:

  • Asegurar que el reloj del servidor está sincronizado (TOTP depende del tiempo)
  • El código es válido solo por 30 segundos, genera uno nuevo
  • Usar códigos de respaldo si la app de autenticación no está disponible
  • Recuperación de cuenta disponible vía email registrado

Implementa Autenticación Segura Hoy

Smart Money API soporta autenticación de nivel empresarial con OAuth 2.0, JWT, MFA e integración SAML. Protege tu integración de API con las mejores prácticas del sector.

Ver Planes Empresariales
¿Necesitas SAML, lista blanca de IP o soporte dedicado? Contacta a nuestro equipo de ventas.

Recursos Relacionados

Empieza gratis — 200 llamadas/día, sin tarjeta

Obtén datos de flujo de ballenas, financiación, interés abierto y on-chain en 3 exchanges desde una sola API. Plan gratuito, sin tarjeta de crédito, actualiza cuando quieras.

Empieza gratis →
Prueba la consola de API en vivo → (no se necesita cuenta)