Acceso

Autenticación y permisos

Autentica con una clave de API en una cabecera o deja que el cliente inicie sesión con OAuth 2.1. En ambos casos los permisos deciden qué herramientas existen.

Clave de APIOAuth 2.1
CómoAuthorization: Bearer <key> en cada peticiónEl cliente inicia sesión; un administrador da su consentimiento
Permisos (scopes)Se elige al crear la clave; queda fijoSe elige en la pantalla de consentimiento; queda fijo hasta que vuelvas a conectar
Como quién actúaEl administrador propietario de la claveEl administrador que dio su consentimiento
Vida útilHasta que se revoque o llegue su fecha de caducidadToken de acceso de 1 hora; token de refresco de 30 días, rotado en cada uso
RevocarEn la página API y MCP de los ajustesLa misma página; la conexión es una entrada

Ambos acaban siendo lo mismo: el token de acceso de una conexión OAuth es una clave de Filmo (fk_live_…), así que también funciona en la API REST. Autenticación REST trata las claves; una suscripción puede tener hasta 50 claves no revocadas, contando las claves caducadas y las conexiones OAuth; el límite te impide crear otra clave a mano.

Una llamada sin credencial a https://app.filmo.io/api/v1/mcp recibe un HTTP 401 con un cuerpo de problema y una cabecera WWW-Authenticate: Bearer realm="filmo-public-api", resource_metadata="…", scope="<the read scopes>". El cliente lee los metadatos del recurso protegido (RFC 9728) en https://app.filmo.io/.well-known/oauth-protected-resource y los metadatos del servidor de autorización (RFC 8414) en https://app.filmo.io/.well-known/oauth-authorization-server. Los metadatos nombran https://app.filmo.io como emisor y https://app.filmo.io/api/v1/mcp como recurso, y su resource_documentation apunta a esta página.

  • El scope del 401 lista los permisos de lectura, así que los clientes que lo usan piden lectura por defecto.
  • scopes_supported enumera todos los permisos (scopes), incluidos los de escritura.
  • Se exige PKCE S256; plain se rechaza. La única autenticación de cliente es ninguna (clientes públicos).
  • Cualquier otro host de producción responde con una redirección (308) al canónico y, para un cliente que no la sigue en un POST, con un error JSON-RPC que nombra la URL. Un cliente que la sigue descarta la cabecera Authorization cuando cambia el origen.
  • No anunciados: client ID metadata documents, iss en la respuesta de autorización, offline_access y un endpoint de revocación. El parámetro resource se ignora: el token no tiene audiencia.
Cliente
Filmo
Administrador
  1. GET /.well-known/oauth-protected-resource · GET /.well-known/oauth-authorization-server

    Descubrimiento (RFC 9728, RFC 8414). El 401 de /api/v1/mcp ya los señala en WWW-Authenticate.

  2. POST /api/v1/oauth/register

    Registro dinámico (RFC 7591). Cliente público: recibes un client_id, nunca un client_secret.

  3. Abre GET /oauth/authorize con un desafío PKCE S256

    plain se rechaza.

  4. Consentimiento

    El administrador elige la suscripción. Solo los permisos de lectura empiezan marcados (los que pide el cliente, o todos si no pide ninguno); las escrituras, workflows:run y ai:ask empiezan siempre desmarcados, aunque el cliente los pida, y el administrador los marca a mano.

  5. Código de autorización

  6. POST /api/v1/oauth/token con grant_type=authorization_code y el verificador PKCE

  7. Token de acceso (1 hora) y token de renovación, con el scope realmente concedido

  8. Authorization: Bearer <token>

    El token es una clave de API de vida corta. Para renovarlo, grant_type=refresh_token: el token de renovación rota en cada uso.

OAuth 2.1 con PKCE

Los clientes se registran por sí mismos (RFC 7591) en https://app.filmo.io/api/v1/oauth/register. El registro es abierto y no necesita credencial, con hasta 10 URI de redirección por cliente; se aceptan las https, las de loopback (http en 127.0.0.1, localhost o [::1], con cualquier puerto) y el esquema personalizado de una app nativa (como myapp://callback); nunca se acepta un fragmento, y la URI de redirección de una petición tiene que coincidir exactamente con una de ellas. Está limitado a 5 registros por minuto y dirección.

Solo un administrador de la cuenta de Filmo puede dar el consentimiento, y elige la suscripción a la que queda ligada la conexión. La pantalla ofrece todos los scopes y marca por defecto solo el mínimo:

  • Se comprueban los permisos (scope) *:read que pidió el cliente; si no pidió ninguno, se comprueban todos los permisos de lectura.
  • Las escrituras, workflows:run y ai:ask empiezan sin marcar aunque el cliente los pida. Lo que pidió lleva “Requested by the integration”; lo que no pidió, “Not requested by the integration”.
  • scope es opcional en la petición y los permisos (scopes) que Filmo no conoce (openid, offline_access, una errata) se ignoran.
  • La pantalla muestra el host de redirección y avisa cuando todas las redirecciones del cliente son loopback. No avisa de un esquema propio de la app.
  • Puedes conceder un permiso que el cliente no pidió. La respuesta del token devuelve el scope realmente concedido, que puede ser menor que el solicitado.
Atención:

Deja ai:ask sin marcar salvo que quieras que el asistente gaste los créditos de IA de la cuenta.

Cualquiera puede registrar un cliente con cualquier nombre, porque el registro es abierto y se aceptan redirecciones a loopback en cualquier puerto. Por eso una página web o un proceso de tu ordenador puede pedir consentimiento como «Claude» o como cualquier otro producto. Antes de aprobar:

  • Comprueba el host de redirección que muestra la pantalla con la página del cliente en Conectar: claude.ai para Claude, chatgpt.com para ChatGPT.
  • Desconfía de un cliente que solo redirige a tu propio ordenador, a menos que lo hayas iniciado tú mismo, desde una herramienta que instalaste.
  • Una redirección que no es https no tiene un host que comprobar. Un esquema de aplicación personalizado (myapp://…) abre una aplicación instalada en este ordenador o teléfono; apruébalo solo si iniciaste el inicio de sesión desde esa aplicación.
  • No apruebes nunca un consentimiento que no hayas iniciado.
  • Revisa cada scope. Una escritura que no necesitas es una escritura que puede usar una instrucción inyectada.
  • El código de autorización dura 60 segundos y sirve una sola vez.
  • El token de acceso dura 1 hora. El token de refresco dura 30 días y se rota en cada intercambio: el token de acceso anterior deja de funcionar al instante.
  • Un refresh token usado dos veces en 10 segundos por el mismo cliente devuelve el mismo par; si se usa de nuevo más tarde, se revoca toda la cadena y el cliente debe pedir consentimiento otra vez.
  • Los errores de OAuth son { error, error_description }, no documentos de problema, y la descripción está en español. En un 429 sigue Retry-After, no el cuerpo.

Una herramienta para la que la conexión no tiene permiso (scope) devuelve insufficient_scope como error de herramienta con requiredScope; no hay petición para ampliar permisos. Para añadir un permiso, elimina el conector y vuelve a añadirlo.

Revoca una conexión o una clave en la página API y MCP de los ajustes de la aplicación. El token de acceso falla con api_key_revoked al instante, y el token de refresco ya no se puede canjear.

  • Guías

    Permisos (scopes)

    Una clave lleva permisos; cada operación exige exactamente uno. Concede los mínimos que necesites.

  • Guías

    Para administradores

    Un asistente actúa con el consentimiento de uno de tus administradores. Decide quién puede conectar, qué puede conceder y cómo retirarlo.

  • Introducción

    Servidor MCP

    Conecta un asistente de IA a tu cuenta de Filmo. Puede usar exactamente las herramientas que permita su clave o su conexión.

¿Te ha resultado útil esta página?