Clustraly
Plugins & API interne

Une API JSON admin verrouillée : sécurité et contrôle d'accès sur chaque endpoint

API JSON admin sécurité & contrôle d'accès une fonctionnalité du module Plugins & API interne de Clustraly. La sécurité de l'API JSON admin superpose limitation de débit, authentification de session, permissions fines, jeton CSRF et contrôle par objet sur chaque endpoint /admin/api.

Vous exposez des opérations d'administration puissantes sans jamais baisser la garde. Limitation de débit, session, permissions nommées, CSRF et cloisonnement par auteur s'appliquent à chaque route /admin/api. L'IA propose, vous décidez qui accède à quoi.

Défense en profondeur

Chaque appel à votre API admin franchit plusieurs gardes avant d'atteindre vos données

Vous n'exposez jamais une API brute. Chaque route /admin/api est placée derrière une pile de protections qui s'additionnent, du contrôle de débit jusqu'au cloisonnement par propriétaire.

Concrètement, un appel doit passer la limitation de débit, l'authentification de session, la permission requise, le jeton CSRF pour les mutations, puis le contrôle au niveau objet avant la moindre réponse.

  • Tous les endpoints /admin/api regroupés sous la même pile de protection
  • Rien d'exposé en direct : session, permission, CSRF puis contrôle par objet
  • Aucune route ouverte par défaut : l'accès se mérite à chaque couche
  • Réponses toujours en JSON, jamais une page d'erreur HTML illisible
Limitation de débit

Absorbez les rafales et les scripts abusifs sans exposer votre back-office

Un flot d'appels ne submerge pas votre administration. Un seau de débit dédié à l'API encadre chaque client, et une session admin valide reste exigée avant toute route.

La limitation s'applique à l'ensemble des endpoints, en lecture comme en écriture : personne ne martèle votre API sans être d'abord authentifié et régulé.

  • Seau « api » dédié : chaque client est limité en débit sur l'API admin
  • Authentification de session du groupe admin exigée avant toute route
  • Une session valide reste indispensable, même pour une simple lecture
Permissions fines

Donnez à chacun exactement les droits dont il a besoin, pas un de plus

Vous décidez qui peut voir, créer ou modifier. La plupart des routes portent une permission nommée, vérifiée avant l'exécution, si bien qu'un rôle sans le droit requis n'obtient jamais la donnée.

Chaque domaine a son droit propre : articles, SEO, analytics, tags, catégories. Le périmètre de chaque intervenant reste net et sous votre contrôle.

  • Permissions nommées par route : articles.view, articles.create, articles.edit…
  • SEO, analytics, tags et catégories disposent chacun de leur droit dédié
  • Un rôle sans le droit requis reçoit un 403, pas vos données
Protection CSRF

Bloquez les requêtes forgées depuis un autre site sur toutes vos mutations

Un site tiers ne peut pas détourner la session d'un administrateur connecté pour agir à son insu. Toutes les mutations exigent un jeton CSRF valide, sinon la requête est rejetée.

Créations, mises à jour, actions groupées : chaque POST et chaque PUT est couvert, sans que vous ayez à y penser.

  • Jeton CSRF exigé sur chaque POST et PUT de l'API admin
  • Créations, mises à jour et actions groupées toutes couvertes
  • Une requête inter-sites sans jeton valide est refusée
Contrôle au niveau objet

Cloisonnez chaque auteur à ses propres contenus, automatiquement

Au-delà des permissions, l'API restreint lecture et actions aux ressources réellement possédées pour les rôles non élevés. Un auteur ne liste et ne lit que ses propres articles.

Ce cloisonnement s'applique jusque dans les actions groupées : les ids non possédés sont filtrés avant tout traitement, sans exposer les contenus des autres.

  • Auth::ownsOrCan restreint lecture et actions aux ressources possédées
  • Les rôles non élevés ne listent et ne lisent que leurs propres articles
  • Les actions groupées filtrent d'abord les ids non possédés
Réponses prévisibles

Recevez des erreurs propres et exploitables, jamais une page cassée

Vos intégrations savent toujours quoi afficher. L'API répond uniformément en JSON, du succès à l'échec, avec des codes HTTP adaptés à chaque situation.

Un refus renvoie 403, une ressource absente 404, une donnée invalide 422, une panne 500 des signaux clairs à traiter, plutôt qu'un HTML illisible côté client.

  • Réponses uniformément en JSON, du succès à l'erreur
  • Codes HTTP adaptés : 403 interdit, 404 introuvable, 422 invalide, 500 erreur
  • Vos clients savent toujours quoi afficher, sans deviner
Pourquoi ça compte

L'IA propose, vous décidez qui touche à quoi

Vous définissez les rôles et les droits ; le CMS applique chaque couche sur chaque appel. Limitation de débit, session, permission, CSRF et contrôle par objet ne dépendent pas de la bonne volonté du client : ils s'imposent côté serveur, à toute route /admin/api.

FAQ

Questions fréquentes

Quelles routes sont réellement protégées ?
Tous les endpoints /admin/api sont regroupés sous la limitation de débit et l'authentification de session du groupe admin. La plupart ajoutent une permission fine, et toutes les mutations (POST/PUT) exigent en plus un jeton CSRF.
Comment sont traités les rôles non élevés ?
Un contrôle au niveau objet (Auth::can, Auth::ownsOrCan) restreint lecture et actions aux ressources possédées. Un auteur ne voit que ses propres articles ; un accès non autorisé reçoit un 403.
Que renvoie l'API en cas de refus ou d'erreur ?
Toujours du JSON, avec un code HTTP adapté : 403 pour un accès interdit, 404 pour une ressource introuvable, 422 pour une donnée invalide, 500 pour une panne. Vos intégrations restent prévisibles.
La protection CSRF gêne-t-elle mes lectures ?
Non : le jeton CSRF n'est requis que sur les mutations (POST/PUT). Les lectures (GET) passent par la session et la permission requise, sans jeton supplémentaire à gérer.
Prêt à commencer ?

Exposez votre administration sans jamais exposer vos données

Vous gardez la maîtrise de chaque accès. La sécurité de l'API JSON admin superpose limitation de débit, session, permissions fines, CSRF et contrôle par objet sur chaque endpoint /admin/api, avec des réponses JSON prévisibles à la clé. Vous décidez qui peut voir, créer et modifier ; Clustraly l'applique, appel après appel.