Para clientes que soportan el flujo (Claude.ai, el directorio de conectores de Anthropic), Oktopus expone un Authorization Server OAuth 2.1 completo. No hace falta pegar API keys: el usuario inicia sesión y autoriza scopes en una pantalla de consentimiento.
Endpoints
| Authorization | https://www.oktopus.lat/api/oauth/authorize |
| Token | https://www.oktopus.lat/api/oauth/token |
| Registro (DCR, RFC 7591) | https://www.oktopus.lat/api/oauth/register |
| Revocación (RFC 7009) | https://www.oktopus.lat/api/oauth/revoke |
| Metadata del AS (RFC 8414) | /.well-known/oauth-authorization-server |
| Metadata del recurso (RFC 9728) | /.well-known/oauth-protected-resource |
Cómo funciona el flujo
- El cliente se registra por DCR (
POST /api/oauth/register) — losredirect_uriestán limitados a los callbacks de Claude y a loopback (http://127.0.0.1:<puerto>/callback). GET /api/oauth/authorizecon PKCE S256 obligatorio yresource=https://www.oktopus.lat/api/mcp(RFC 8707).- El usuario inicia sesión en Oktopus y aprueba los scopes en la pantalla de consentimiento.
- El cliente canjea el
codeenPOST /api/oauth/token(concode_verifier) → recibeaccess_token(1 h) +refresh_token. - Usa el access token contra el MCP:
Authorization: Bearer okto_oauth_....
Scopes disponibles
mcp:invoke · orders:create · orders:read · orders:write · products:read · products:write · landings:read · landings:write · stores:read · stores:write · whatsapp:write
ai:generate (generación de imágenes/video con IA) está fuera del conector OAuth por diseño.
Seguridad
- PKCE S256 obligatorio — sin
code_challengeno hay flujo;plainse rechaza. - Audiencia validada — el token solo sirve para el MCP (
resource), fail-closed. - Codes single-use (60 s, consumo atómico — un replay falla).
- Refresh rotation con detección de reuso: si un refresh ya rotado se reusa, se revoca toda la familia de tokens.
- Allowlist de redirects — no se puede registrar un cliente con un callback arbitrario (anti-phishing).
- Errores OAuth genéricos (
invalid_grant) — sin filtración de internals.