Un plugin communautaire ajoute des listes d'autorisation par clé pour les clés API Jellyfin

Dans Jellyfin, toute clé API que vous créez a le même poids qu'une clé administrateur. Un développeur communautaire a trouvé cela suffisamment gênant pour concevoir une solution, et la publie désormais en version préliminaire : API Key Middleware, avec un appel ouvert aux retours.

Comment fonctionne la limitation de portée

Chaque clé dispose de sa propre liste d'autorisation, construite à partir d'une méthode HTTP associée à un chemin. Le déploiement se veut volontairement progressif :

  • Une clé nouvellement créée démarre en mode audit, de sorte que les requêtes passent sans modification.
  • Après quelques jours d'utilisation normale, vous ouvrez le constructeur de règles sur la page du plugin. Les appels réellement effectués par la clé sont présélectionnés.
  • Vous vérifiez cette sélection, faites passer la clé en enforce, et toute requête hors de la liste reçoit une réponse 403.

Le plugin expose tous les points de terminaison du serveur, chacun avec la description fournie par Jellyfin. Les points de terminaison réservés aux administrateurs sont signalés, tout comme ceux qu'une clé donnée a été observée en train d'appeler. La portée se limite aux clés API : les sessions utilisateur et le trafic anonyme ne sont pas concernés.

Qui est concerné

Tous ceux qui émettent des clés pour des tableaux de bord, des agents de supervision ou des scripts d'automatisation. L'auteur l'a d'abord écrit pour un seul serveur, motivé par le risque qu'un unique fichier de configuration exposé donne accès à tout, avant de le peaufiner pour un public plus large.

Points de vigilance à connaître

  • Le développement et les tests ont été réalisés sur Jellyfin 12.4.0.
  • Le plugin échoue en mode ouvert : désactiver le plugin ou un échec de chargement, par exemple après une mise à jour de Jellyfin, rétablit l'accès complet à toutes les clés. Vérifiez qu'il est bien indiqué comme Active après une mise à jour.
  • Il réduit ce que les clés peuvent faire ; il ne remplace ni les mises à jour de Jellyfin, ni un pare-feu, ni un VPN.
  • L'auteur indique ouvertement que le travail a été réalisé avec Claude (l'IA d'Anthropic) via Claude Code, qui a pris en charge une large part de l'implémentation, des tests et de la revue de sécurité, tandis que l'auteur a fixé la direction, pris les décisions et tout validé sur son propre serveur.

Le code est sous GPL-3.0. Les retours sont attendus sur les contournements (méthodes d'authentification, cas limites de routage), l'ergonomie et le comportement sur d'autres configurations ; les signalements de sécurité doivent passer par le canal privé de GitHub.

Commentaire pour les auto-hébergeurs

Les clés API à portée limitée sont une lacune que beaucoup d'entre nous tolèrent depuis des années ; c'est donc un pas dans la bonne direction. Considérez-le comme une couche de durcissement parmi d'autres plutôt que comme un périmètre : comme il échoue en mode ouvert, un échec de chargement silencieux après une mise à jour rétablit discrètement l'accès complet, alors ajoutez une vérification « le plugin est-il Active ? » à votre routine post-mise à jour. Passez d'abord en mode audit, laissez le trafic réel s'accumuler, puis appliquez et surveillez les journaux pour repérer les 403 inattendus. Si vous utilisez plusieurs plugins qui communiquent avec l'API Jellyfin, notre page plugins Jellyfin montre comment nous gérons la compatibilité.

Sources