Un plugin comunitario añade listas de permitidos por clave para las claves API de Jellyfin

En Jellyfin, cualquier clave API que crees tiene el mismo peso que una clave de administrador. A un desarrollador comunitario le pareció lo bastante incómodo como para crear una solución, y ahora la ha publicado como versión temprana: API Key Middleware, con una petición abierta de comentarios.

Cómo funciona la delimitación de permisos

Cada clave tiene su propia lista de permitidos, formada por un método HTTP emparejado con una ruta. El despliegue es intencionadamente gradual:

  • Una clave recién creada empieza en modo auditoría, así que las peticiones pasan sin modificarse.
  • Tras unos días de uso normal, visitas el generador de reglas en la página del plugin. Las llamadas que la clave ha hecho realmente aparecen preseleccionadas.
  • Revisas esa selección, pasas la clave a enforce y cualquier petición fuera de la lista recibe un 403.

El plugin muestra todos los endpoints que expone el servidor, cada uno con la descripción propia de Jellyfin. Los endpoints solo para administradores están marcados, igual que aquellos a los que una clave concreta ha accedido. El alcance se limita a las claves API: las sesiones de usuario y el tráfico anónimo no se tocan.

A quién afecta

A cualquiera que emita claves para paneles, agentes de monitorización o scripts de automatización. El autor lo escribió originalmente para un único servidor, motivado por el riesgo de que un solo archivo de configuración expuesto lo entregara todo, y después lo pulió para un público más amplio.

Advertencias que conviene conocer

  • El desarrollo y las pruebas se hicieron en Jellyfin 12.4.0.
  • Falla en abierto: desactivar el plugin o un fallo de carga, como tras una actualización de Jellyfin, restaura el acceso completo a todas las claves. Confirma que aparece como Active después de actualizar.
  • Reduce lo que pueden hacer las claves; no sustituye a las actualizaciones de Jellyfin, un firewall ni una VPN.
  • El autor declara abiertamente que el trabajo se hizo junto con Claude (la IA de Anthropic) mediante Claude Code, que se encargó de buena parte de la implementación, las pruebas y la revisión de seguridad, mientras el autor marcó la dirección, tomó las decisiones y validó todo en su propio servidor.

El código es GPL-3.0. Se piden comentarios sobre posibles evasiones (métodos de autenticación, casos límite de rutas), usabilidad y comportamiento en otras configuraciones; los informes de seguridad deben enviarse por el canal privado de GitHub.

Comentario para quienes autoalojan

Las claves API con permisos delimitados son una carencia que muchos hemos tolerado durante años, así que esto es un paso en la dirección correcta. Trátalo como una capa de endurecimiento más, no como un perímetro: como falla en abierto, un fallo de carga silencioso tras una actualización devuelve el acceso completo sin avisar, así que añade a tu rutina posterior a la actualización una comprobación de "¿está el plugin Active?". Ejecuta primero en modo auditoría, deja que se acumule tráfico real, y luego aplica las restricciones y vigila los registros en busca de 403 inesperados. Si usas varios plugins que hablan con la API de Jellyfin, nuestra página de plugins de Jellyfin muestra cómo gestionamos la compatibilidad.

Fuentes