Logo GH

Autenticación y autorización

Un circuito AuthN/AuthZ fiable es un único punto de verdad sobre quién eres (autenticación) y qué se te permite (autorización). En una plataforma con multitud de marcas, regiones, integraciones y altas exigencias regulatorias, este circuito debe ser modular, observado y gestionado por las políticas, en lugar de ser un «relleno de si-servicios».

1) Términos y roles básicos

Identificación (ID): identificación (usuario, servicio, proveedor).
Autenticación (AuthN): prueba de identidad (contraseña, MFA, certificado).
Autorización (AuthZ): la decisión «se puede/no se puede» basada en políticas y contexto.
PDP/PEP: Punto de decisión de la política (toma la decisión )/Punto de decisión de la política (aplica).
IdP: Proveedor de identificación (OIDC).
Subject/Resource/Action/Context: quién/a qué/qué hace/bajo qué condiciones.

2) Arquitectura de contorno general


[ IdP (OIDC) ]
│ OIDC/OAuth 2. 1 (PKCE, JAR/JARM)

[ Token Service / JWKS / KMS ]
│klyuchi (rotate)
│ JWT/Access/Refresh, mTLS

[API Gateway (PEP)] Solution/Policy ──kesh
│ authN/CSRF/CORS/rate-limit

[ Microservices (PEP)]──PDP (OPA/cedar) ──Policy Store (GitOps)
│audit/metriki

[ Data/Providers ]── service-to-service (mTLS+JWT/Spiffe)

Principios: centralización de la generación de tokens y políticas, aplicación local; «privilegios mínimos» y delegaciones explícitas.

3) Autenticación de usuario (OIDC/OAuth 2. 1)

Patrones:
  • Authorization Code + PKCE (siempre para SPA/Mobile).
  • SSO: soporte de IdP externo (SAML/OIDC) para b2b/operadores.
  • MFA: TOTP/WebAuthn/SMS (recomendado por WebAuthn y TOTP; SMS — fallback).
  • Risk-based Step-Up: en acciones sensibles (retiros, cambios de datos), requiere MFA/pe-Auth.
Prácticas de seguridad:
  • Refresh Token Rotation + registro RT con el detalle de reutilización.
  • Nonce/State + PKCE, un CORS/CSRF estricto para flujos de navegador.
  • Short-lived access tokens (5–15 мин) + silent refresh/RT.
  • Device binding (DPoP/mtls-bound tokens) para operaciones críticas.
Ejemplo de JWT (usuario):
json
{
"iss": "https://auth. example. com",
"sub": "user_9f12",
"aud": ["wallet","catalog"],
"exp": 1730385600,
"iat": 1730384700,
"tenant": "brand_eu",
"region": "EE",
"amr": ["pwd, ""webauthn"] ,//authentication methods
"scp": ["wallet:read","bets:place","kyc:status. read"],
"sid": "sess_a1b2c3",      // session id
"acr": "urn: mfa: strong "//warranty level
}

4) Servicio de autenticación (mTLS, SPIFFE, JWT)

mTLS entre servicios + SPIFFE/SPIRE para identificadores de workload's sostenibles.
Servicio JWT a corto plazo (≤5 min), firmado por HSM/KMS; Auditoría de la emisión.
Audience-scoped: JWT sólo es adecuado para un servicio/dominio específico.
Zonas de confianza: servicios de otra región/tenant - PKI y políticas individuales.

5) Modelos de autorización: RBAC, ABAC, ReBAC

RBAC (roles → resolución): simple y transparente (adecuado para paneles de administración, operadores).
ABAC (atributos sujeto/recurso/contexto): flexible para reglas "tenant =... AND region=… AND kyc_tier≥2».
ReBAC (relaciones): útil para posesiones complejas («quién posee la marca/carpeta/campaña»).

Recomendación: híbrido - RBAC básico + condiciones ABAC contextuales + relaciones ReBAC puntuales.

6) Políticas y su ejecución (PDP/PEP)

PEP en Gateway y en los servicios: extrae el contexto (JWT, mandatos, IP/ASN, tiempo, región, nivel KYC), forma la solicitud a PDP.

El PDP (por ejemplo, OPA/cedar) recibe:
json
{
"subject": { "sub":"user_9f12", "roles":["support"], "kyc":2, "tenant":"brand_eu" },
"action": "bets. place",
"resource": { "game_id":"g_42", "provider":"pr_x" },
"context": { "region":"EE", "ip_asn":"AS12345", "time":"2025-10-31T12:34:56Z" }
}

y devuelve 'ALLOW/DENY' + explicación.

La caché de soluciones PEP (TTL 30-120 c) reduce la latencia; discapacidad por eventos de «cambio de roles/políticas».

Ejemplo de política (pseudo-Rego):
rego package bets

default allow = false

allow {
input. action == "bets. place"
input. subject. kyc >= 2 input. subject. tenant == input. context. tenant not blocked_region within_limits
}

blocked_region { input. context. region == "NL" }
within_limits { input. context. bet_amount <= data. limits. max_bet[input. subject. tenant] }

7) Escopetas y permisos

Nomenclatura:
  • Recurso: acción - 'wallet: read', 'wallet: transfer', 'bets: place', 'kyc: status. read`.
  • Para administradores - 'admin:' en un dominio aislado.
  • Para proveedores - 'provider: report. read`, `provider:events. push`.

El principio de los privilegios mínimos: asignamos sólo los scoups necesarios; «escaladas» (extensiones temporales de derechos) - por ticket y con TTL.

8) Multi-tenant y regiones (residency)

Las señales contienen 'tenant', 'region', 'licence'; PDP comprueba la conformidad con el recurso.
Roles/directivas: espacios de nombres per tenant ('role: brand _ eu/support').
Divide las claves de firma y las listas de revocación por región; consultas entre regiones - sólo a través de puertas de enlace de confianza.

9) Gestión de sesiones y dispositivos

Server-side session store para web (enlace a dispositivo/navegador, rotación de ID).
Idle/Absolute Timeout (por ejemplo, 30 min/24 h); acciones sensibles - re-Auth/MFA.
Lista de dispositivos activos, «salir de todos».
Anomalías: entradas simultáneas de diferentes regiones, fallas frecuentes de MFA - señales de riesgo.

10) Delegación y consentimiento (consent)

On-behalf-of (OBO): el servicio actúa en nombre del usuario (un token proxy con una 'sub '/' act' separada).
Consentimiento: pantalla explícita para el acceso del socio a los datos, registro de consentimiento para la revocación.
Access-mandates temporales: los derechos de N horas/días, expiran automáticamente.

11) Claves, firmas y rotación

JWKS con 'kid', rotación automática, almacenamiento de claves privadas en KMS/HSM.
Algoritmos: ES256/EdDSA para JWT; TLS 1. 2+/mTLS.
Dual-key período: recepción de ambos 'kid' antes de completar la actualización de clientes.
Reseña de RT y Token Introspection para incidentes críticos.

12) Seguridad de aplicaciones cliente

SPA: Authorization Code + PKCE, no `implicit`, строгий CORS/Content-Security-Policy.
Mobile: App Attestation/Device Check, almacenamiento RT seguro, protección de Ruth/jailbreak.
Desktop: navegador del sistema para inicio de sesión (no embedded web-views), PKCE.

13) Contratos de conveniencia SDK

Evaluate (AuthZ) API:
http
POST /authz/evaluate
Authorization: Bearer <access_jwt>
Body: { "action":"bets. place", "resource":{"game_id":"g_42"}, "context":{"bet_amount":5. 0} }
→ 200 { "decision":"ALLOW", "ttlMs":60000, "explain":"kyc>=2, limit ok" }
Token Exchange (OBO):
http
POST /oauth/token grant_type=urn:ietf:params:oauth:grant-type:token-exchange subject_token=<user_jwt>&actor_token=<service_jwt>&audience=wallet

14) Observabilidad y auditoría

Métricas:
  • `authn_success_rate`/`mfa_challenge_rate`/`mfa_fail_rate`
  • `authz_p95_ms`, `authz_denied_rate{reason}`
  • `invalid_token_rate`, `jwks_skew_ms`, `rt_reuse_detected`
  • Anomalías de entradas (nuevo dispositivo, geo-velocidad), escopetas sospechosas.
Registros/Auditoría (sin cambios):
  • `who/what/when/where/why`, `decision`, `policy_version`, `token_kid`, `client_id`.
  • Exportación para cumplimiento (regulador/auditoría de proveedores).

15) Protección del perímetro y del cliente

Gateway PEP: rate-limit, bot/signature checks, protección CSRF, CORS estricto, HSTS.
Tráfico interno: mTLS + JWT de servicio + redes limitadas.
Webhooks/collbacks externos: firmas corporales (HMAC/JWS), ventanas de tiempo, anti-réplica.

16) Errores típicos

Tokens de acceso de larga vida → fugas.
Flujo implícito de OAuth en el SPA.
No hay rotación de llaves y periodo Dual-Key.
Funciones definidas en lugar de políticas (no se pueden auditar ni explicar soluciones).
Mezcla de tenantes/regiones en un solo 'role' o 'key'.
No hay MFA de paso a paso en las acciones sensibles.
Caché de soluciones AuthZ sin discapacidad para cambios de rol.

17) Playbooks (runbooks)

1. Compromiso de clave de firma JWT

Revoke inmediato 'kid', publicación del nuevo JWKS, discapacidad forzada RT/sesiones, informe a la auditoría.

2. Masa 'invalid _ token'

Comprobar el reloj/tiempo de vida Rassynchron, la relevancia de JWKS, fallas de caché.

3. Anomalías de las entradas

Habilitar el aumento de riesgo-puntuación, requerir paso a paso, notificar al usuario, limitar temporalmente los pagos.

4. Error de IdP

Cambiar a caché de sesión/rol-dispositivo, limitar nuevos logins, mantener las sesiones actuales hasta TTL.

18) Lista de verificación antes de la venta

  • OIDC/OAuth 2. 1 con PKCE, AT corto, rotación RT, device binding para operaciones críticas.
  • MFA (WebAuthn/TOTP) y step-up para pines/cambios de datos/rol-escalaciones.
  • Servicio a servicio: mTLS + SPIFFE, JWT de servicio de corta duración.
  • Políticas AuthZ (RBAC + ABAC/ReBAC) en PDP centralizado; PEP en gateway y en servicios.
  • Caché de soluciones para discapacitados; audit trail inmutable.
  • Multi-tenant/regiones: aislamiento de claves/políticas/registros, contabilidad de licencias.
  • JWKS/llaves en KMS/HSM, rotación dual-key, monitoreo 'kid'.
  • Filtros CSRF/CORS/HSTS/Rate-limit/bot en el perímetro.
  • Playbooks de incidentes, run-botones revoke/rotate/lockdown.
  • Conjunto de pruebas: unidad (políticas), contrato (SDK/flows), chaos (IdP, JWKS), e2e (step-up, OBO, revoke).

19) Mini plantillas de configuración

Registro Scope (YAML):
yaml scopes:
wallet: read: {desc: "Reading balance"}
wallet: transfer: {desc: "Transfer of funds," sensitive: true, step_up: true}
bets: place: {desc: "Bet"}
kyc:status. read: {desc: "KYC status"}
roles:
support:
allow: [wallet:read, kyc:status. read]
finance:
allow: [wallet:read, wallet:transfer]
player:
allow: [bets:place]
Política PDP (condición de región):
yaml deny:
- when: { region: ["NL","BE"] }
actions: ["bets."]

El esquema de autenticación y autorización no es una biblioteca, sino una capacidad de plataforma: tokens de vida corta y claves administradas, políticas centralizadas y su aplicación local, multifactor y step-up, aislamiento estricto de tenantes/regiones, auditoría y telemetría. Este diseño hace que los cambios sean seguros, explicables para el regulador y transparentes para el producto - y el escalamiento por mercados y equipos se convierte en una operación rutinaria en lugar de una hazaña.

Contact

Póngase en contacto

Escríbanos ante cualquier duda o necesidad de soporte.¡Siempre estamos listos para ayudarle!

Telegram
@Gamble_GC
Iniciar integración

El Email es obligatorio. Telegram o WhatsApp — opcionales.

Su nombre opcional
Email opcional
Asunto opcional
Mensaje opcional
Telegram opcional
@
Si indica Telegram, también le responderemos allí además del Email.
WhatsApp opcional
Formato: +código de país y número (por ejemplo, +34XXXXXXXXX).

Al hacer clic en el botón, usted acepta el tratamiento de sus datos.