OAuth 2.1

OAuth 2.1 — Visión general

Cómo OAuth permite que aplicaciones de terceros actúen en nombre de comerciantes en Whatalo.

OAuth 2.1 es el mecanismo correcto cuando tu aplicación necesita acceder a la API de Whatalo en nombre de un comerciante. A diferencia de una API Key que identifica una integración única, un token OAuth está vinculado a un usuario que autorizó tu app y a la tienda específica que eligió en el momento del consentimiento.

¿Cuándo usar OAuth vs. API Keys?

CriterioAPI KeyOAuth 2.1
Quién autorizó el accesoEl propio comerciante, manualmenteEl comerciante via flujo de consentimiento
Vinculado aUna tienda (configuración manual)La tienda que el usuario selecciona al autorizar
Soporte multitenantNo (una key por tienda)Sí (un app para muchas tiendas)
Acceso delegadoNo
Ideal paraScripts internos, servidor a servidorApps de terceros, clientes MCP, integraciones SaaS
RevocaciónManual desde el dashboardPor el usuario desde ajustes, o al expirar el token

Flujo de alto nivel

Tu app                       Whatalo AS                  Tienda del comerciante
   │                              │                               │
   │── POST /oauth/register ─────►│                               │
   │◄── client_id ───────────────│                               │
   │                              │                               │
   │── GET /oauth/authorize ─────►│                               │
   │                              │◄── usuario selecciona tienda ─│
   │◄── ?code=AUTH_CODE ─────────│                               │
   │                              │                               │
   │── POST /oauth/token ────────►│                               │
   │◄── access_token + refresh ──│                               │
   │                              │                               │
   │── Authorization: Bearer ────►│ (API v1)                      │

Conformidad con estándares RFC

Whatalo implementa los siguientes estándares como Authorization Server:

RFCNombreSoporte
OAuth 2.1 (draft)Marco base actualizadoCompleto
RFC 7591Dynamic Client RegistrationCompleto
RFC 7662Token IntrospectionCompleto
RFC 7009Token RevocationCompleto
RFC 8414Authorization Server MetadataCompleto
RFC 8707Resource IndicatorsParcial — política de valor único
RFC 6749 §4.1Authorization Code FlowCompleto (con PKCE obligatorio)

Base URL del Authorization Server

https://app.whatalo.com

Todos los endpoints OAuth se sirven desde esta base. Nunca escribas las URLs de endpoint manualmente — usa el endpoint de Discovery para resolverlas en tiempo de ejecución.

Formato del access_token

Whatalo emite tokens opacos (no JWT). Esta decisión arquitectónica afecta directamente cómo tu Resource Server valida los tokens:

  • El access_token es una cadena aleatoria de 32 bytes codificada en base64url. No contiene información decodificable del lado del cliente.
  • No se firma con claves públicas, por lo que el endpoint de Discovery no expone jwks_uri.
  • Para validar un token, tu Resource Server debe llamar al endpoint de Introspección en cada request (con caché opcional, TTL ≤ 60 s).

Implicaciones para tu Resource Server

TemaTokens opacos (Whatalo)Tokens JWT firmados
ValidaciónRound-trip a /oauth/introspectVerificación local con JWKS
Latencia añadida~50–100 ms (mitigable con caché)Cero
Revocación instantáneaSí — efectiva al expirar el cachéDifícil — requiere denylist
Privacidad del tokenCero metadata expuestaClaims visibles si se decodifica

Es una decisión deliberada. Los tokens opacos permiten revocación inmediata cuando un comerciante revoca el acceso de una app desde sus ajustes — todos los tokens activos se invalidan al instante. Con JWTs firmados, este caso requeriría una denylist distribuida adicional.

Caché recomendado

Cachea respuestas active: true de Introspección con TTL máximo 60 segundos por token. No caches respuestas active: false — un token puede ser revocado en cualquier momento por el usuario, y un caché agresivo retrasaría la revocación efectiva.

Páginas de referencia

PáginaDescripción
DiscoveryMetadata del Authorization Server (RFC 8414)
Registro de clientesRegistro dinámico de tu app (RFC 7591)
Flujo de autorizaciónAuthorization Code + PKCE paso a paso
Token endpointIntercambio de código y renovación de tokens
IntrospecciónValidación de Bearer tokens (RFC 7662)
RevocaciónRevocar tokens activos (RFC 7009)
ScopesTabla completa de los 15 scopes disponibles
Errores OAuthCódigos de error y cómo manejarlos

On this page