Portal de desarrolladores y tokens de acceso
1) Papel del portal de desarrolladores
El Portal del Desarrollador es una «oficina frontal» para integradores: autoservicio (llaves, tokens, webhooks, planes de tarifas), transparencia (límites, usage, facturas), seguridad (rotación, firmas), velocidad de integración (SDK, documentación, caja de arena).
Objetivos clave:- Reducir el TTI (tiempo de integración) a horas.
- Dar manejabilidad de acceso: quién/qué/cuánto/cuándo.
- Reduzca la carga de soporte a través de herramientas automáticas.
2) Onboarding y cuentas
Registro: email + 2FA/SSO (SAML/OIDC); confirmación de dominio (token DNS).
Organizaciones y equipos: roles de 'Owner', 'Admin', 'Desarrollador', 'Billing', 'Seguridad'.
Multi-tenant: vincular las aplicaciones a las organizaciones; acceso a los datos - por el tenor/entorno.
KYC/B2B (opz.) : para Enterprise - persona jurídica, contrato, límites anteriores.
3) Apéndices y créditos
Tipos de aplicaciones: 'server-to-server', 'web', 'mobile', 'machine-to-machine', 'webhook-consumer'.
3. 1 API Keys (server-to-server, integraciones simples)
Identificador 'key _ id' + secreto 'key _ secret' (visible una vez).
Enlaza con el plan y los conjuntos scopes.
Firma de consulta (HMAC) y/o encabezado 'Authorization: ApiKey <key_id>:<signature>'.
3. 2 OAuth2/OIDC (recomendado)
Subvenciones:- Clientes Credentials (máquinas).
- Authorization Code (+PKCE) (user-delegated).
- Refresh Token (acceso fuera de línea, rotación RT).
- Código de dispositivo (TV/consola).
3. 3 mTLS (nivel adicional)
TLS recíproco en inglés; los certificados se cargan a través del portal; la referencia 'cert _ fingerprint' a la aplicación.
4) Tokens: tipos y ciclo de vida
Principios:- Corto AT + RT largo; RT - rotación deslizante (rotate-on-use).
- Revocación forzada (revoke) por clave/aplicación/organización.
- Pere-emisión, manteniendo las restricciones de scopes/cuotas.
4. 1 Formato JWT (ejemplo)
json
{
"iss":"https://auth. example. com",
"sub":"app_123",
"aud":"https://api. example. com",
"exp":1730616000,
"iat":1730612400,
"scp":["wallet:read","bet:write"],
"org":"acme",
"kid":"jwks_2025_11",
"jti":"at_01HXY..."
}
Las claves públicas se publican en JWKS; rotación por 'kid'.
4. 2 tokens Opaque e Introspección
Almacene en el servidor Auth 'token _ store' (Redis/SQL).
Introspección: 'active', 'scope', 'amb', 'client _ id', 'org', 'tenant'.
5) Scopes, roles y políticas de acceso
Scopes describe las operaciones ('wallet: read', 'wallet: write', 'report: read').
Los roles se agregan a scopes ('Desarrollador', 'Billing').
ABAC: atributos 'org', 'tenant', 'region', 'environment'.
Políticos: «esta clave es sólo 'eu-west-1' y 'read'».
Paso a paso: los métodos críticos requieren scopes avanzados o mTLS.
6) Cuotas, límites y tarifas
Rate limits: RPS/RPM, burst.
Cuotas: día/mes, préstamos.
Por clave/aplicación/organización/tenante.
El portal muestra el usage, los encabezados 'X-RateLimit-' y 'X-Quota-', así como el pronóstico del overage.
Facturación: combinación con el plan, metering por eventos, facturas y webhooks de facturación.
7) Gestión de webhooks
Registro de endpoint's, secretos, versiones de eventos.
Prueba de entrega y respuesta; registros de intentos (2xx/4xx/5xx).
Firmas HMAC ('X-Signature'), 'X-Webhook-Id', deduplicación, respuesta '410'.
8) Documentación y SDK
OpenAPI/AsyncAPI con generación automática SDK.
Cookbook: consultas de ejemplo, retraídas, idempotencia, paginación, webhooks.
Try-it playground (con llaves de arena).
Changelog version y página de deprecaciones.
9) Sandbox y datos de prueba
Ambientes aislados: 'sandbox', 'staging', 'production'.
Entidades de prueba (jugadores, transacciones) y scripts (ganar/perder, retrasos, 5xx, 429).
Data seeding desde el portal y reset del entorno.
10) Seguridad y almacenamiento de secretos
Hash secretos API Key (no almacenar en abierto); mostrar la clave una vez.
Gestor de secretos (KMS/HSM) para tokens de firma; rotación de claves 'kid'.
IP allowlist, restricciones geográficas, filtros ASN.
2FA/SSO, claves de hardware (WebAuthn).
Protección contra el abudio: CAPTCHA cuando se crea, heurística anti-bot, velocidad de registro.
Registros sin PII/secretos; Redacción por plantillas.
11) Auditoría y cumplimiento
Registro de auditoría: quién creó/vio/revocó la clave, cambió el webhook, descargó el informe.
GDPR/DSAR: descarga y eliminación de datos de aplicaciones/organizaciones.
Políticas de retención: TTL para registros, Legal Hold para incidentes.
Terms of Use/Fair Use y restricciones a la exportación.
12) Administración y operaciones
Revocación masiva de tokens por incidente/compromiso.
Suspensión temporal de la aplicación (suspend) con causa y apelación.
Roll over keys (modo de dos teclas: 'active/next').
Incidente-comm: status page, newsletters, estado RSS/webhooks.
13) Portal UI/UX (pantallas clave)
Organización Dashboard: usage/error/SLO/facturación.
Aplicación: claves, tokens, scopes, límites, webhooks, entornos.
Logs de envío de webhooks con filtros y botón Replay.
Token-consola: liberación/revisión, historial, razones.
Documentación y SDK, Quickstart, código de ejemplo (copiar-pegar).
Sección «Deprecaciones y migraciones».
14) Ejemplos de contratos y confecciones
14. 1 OpenAPI (fragmentos)
yaml paths:
/v1/apps:
post:
summary: Create app security: [{ oauth2: [admin:apps. write] }]
responses:
'201': { description: Created }
/v1/apps/{app_id}/keys:
post:
summary: Create API key (shown once)
responses:
'201': { description: Created }
/v1/oauth2/token:
post:
summary: Token endpoint (CC/AC)
responses:
'200': { description: Access token }
/v1/tokens/revoke:
post:
summary: Revoke access/refresh token responses:
'204': { description: Revoked }
14. 2 Introspección de token (respuesta)
json
{
"active": true,
"client_id": "app_123",
"scope": "wallet:read bet:write",
"org": "acme",
"exp": 1730616000,
"token_type": "access_token",
"jti": "at_01HXY..."
}
14. 3 Política de claves (JSON)
json
{
"app_id":"app_123",
"plan":"pro-2025",
"scopes":["wallet:read","report:read"],
"limits":{"rps":50,"daily_requests":250000},
"regions":["eu-west-1"],
"ip_allow":["192. 0. 2. 0/24"]
}
15) Procesos de versionamiento y depreciación
Versiones semánticas de la API ('/v1 ', '/v2'), compatibilidad «añadir, no romper».
El portal muestra: «qué es obsoleto», hasta qué fecha, y «cómo migrar».
Guías de migración, prueba de sandbox 'v2', dual-write/dual-read donde sea posible.
16) Observabilidad y presentación de informes
Usage → ingresos: gráficos de solicitudes/créditos/overage.
Errores de estado/' error _ code ', histogramas de latencia.
Widgets SLO: disponibilidad y p95 para los bolígrafos clave.
Exportar CSV/JSON, informes web, API para análisis.
17) Hojas de cheques
17. 1 Seguridad
- 2FA/SSO, confirmación de dominio/correo
- Mostrar secretos una vez, almacenamiento hash
- JWKS y rotación de llaves, 'kid'
- mTLS (ops.) , IP allowlist, filtros geo/ASN
- Anti-bot/anti-abuse, rate-limit para la creación de claves
- Auditoría-registro de acciones y accesos
17. 2 DX/Onboarding
- Quickstart ≤ 5 minutos
- SDK (TS/Py/Java/Go/.NET) con la misma superficie
- Playground + llaves de arena
- Cookbook: webhooks, paginación, retraídas, idempotencia
- Página de límites/planes/precios
- Ejemplos de «copiar-pegar»
17. 3 Operaciones
- Revisión masiva de tokens, suspend app
- Página de incidentes/estado + suscripción
- DLQ/Replay para webhooks
- Alertas automáticas sobre el agotamiento cercano de las cuotas
- Informes y facturas mensuales
18) Plan de implementación (3 iteraciones)
Iteración 1 - MVP (2-3 semanas):- Registro de aplicaciones, emisión de API Keys, Credentials de clientes OAuth2, límites básicos (RPS/cuotas), registros de consultas y gráficos de uso, documentación y SDK TS/Python, sandbox.
- JWT + JWKS, rotación de claves, Refresh Token + rotate-on-use, 2FA/SSO de mandato, webhooks (firmas, retries, lógica, replay), facturación de webhooks, informes y exportaciones, roles y ABAC.
- mTLS, herramientas de administración (mass revoke/suspend), deprecación y migración v2, SDK Java/Go/.NET, phinops dashboards, GDPR/DSAR, Legal Hold, avanzado anti-abusivo.
19) Mini preguntas frecuentes
¿JWT o opaque?
JWT es conveniente sin solicitar un servidor Auth (firma/' kid '), opaque es más fácil de revocar y oculta el contenido. A menudo se utilizan ambos: externamente JWT, internamente - opaque con introspección.
¿Cuánto vive Access Token?
Corto: 5-15 minutos para personalizados, 15-60 minutos para máquinas. Compensado por la mecánica refresh.
¿Cómo puedo rotar las llaves con seguridad?
Mantenga 'active/next', publique ambos en JWKS, cambie a los clientes por' kid ', luego retire el antiguo.
Un fuerte portal de desarrolladores es el autoservicio, la observabilidad y la seguridad por defecto. Proporcione procesos claros de emisión/rotación/revocación de tokens, límites transparentes y facturación, documentación de calidad y SDK, sitios web confiables y auditorías. A continuación, los integradores se inician rápidamente y su plataforma seguirá siendo manejable, compatible y resistente bajo carga.