TMaps - API Cartographie Tunisie

Domaines autorisés

Restreignez vos clés API à une liste blanche de domaines pour empêcher leur utilisation depuis un site tiers.

Un domaine autorisé (Authorized Domain) est un nom d’hôte depuis lequel vos clés API sont autorisées à être utilisées. Le check se fait à chaque requête en comparant les headers Origin puis Referer à la liste des domaines liés à la clé.

Créer un domaine autorisé

  1. Connectez-vous à app.tmaps.tn.
  2. Dans la barre latérale, cliquez sur Authorized Domains.
  3. Cliquez sur Add Domain.
Page Authorized Domains avec le bouton Add Domain en haut à droite.
Page Authorized Domains avec le bouton Add Domain en haut à droite.
  1. Saisissez le nom de domaine sans schéma ni chemin :

    • monsite.tn
    • app.monsite.tn
    • localhost
    • https://monsite.tn
    • monsite.tn/dashboard
    • *.monsite.tn (wildcard non supporté)
  2. Cliquez sur Add.

Modal d'ajout d'un domaine autorisé.
Modal d'ajout d'un domaine autorisé.

Pas de wildcard

Le check des domaines est strict. Pour autoriser plusieurs sous-domaines, ajoutez chaque sous-domaine séparément (app.monsite.tn, admin.monsite.tn, …).

Localhost en développement

Pour le développement local, ajoutez explicitement localhost (et 127.0.0.1 si vous l’utilisez) à votre liste : sinon vos appels seront rejetés en 403 tant que vous n’êtes pas en production.

Lier une clé à un ou plusieurs domaines

Une fois vos domaines ajoutés, vous devez les lier aux clés concernées. Vous pouvez le faire de deux façons :

Depuis la fiche d’une clé

  1. Ouvrez API Keys puis cliquez sur la clé concernée.
  2. Dans la section Authorized Domains, cliquez sur Link domain.
  3. Sélectionnez les domaines à autoriser pour cette clé puis validez.
Fiche d'une clé API avec la section Authorized Domains et le bouton Link domain.
Fiche d'une clé API avec la section Authorized Domains et le bouton Link domain.

Depuis la fiche d’un domaine

  1. Ouvrez Authorized Domains puis cliquez sur le domaine concerné.
  2. Dans la section API Keys, cliquez sur Link key.
  3. Sélectionnez les clés à associer puis validez.
Fiche d'un domaine autorisé avec la liste des clés liées et le bouton Link key.
Fiche d'un domaine autorisé avec la liste des clés liées et le bouton Link key.

Modèle N : N

Le lien entre clés et domaines est N : N :

  • Une même clé peut être autorisée sur plusieurs domaines (ex. monsite.tn, app.monsite.tn, localhost).
  • Un même domaine peut être autorisé pour plusieurs clés (ex. votre clé de prod et celle de pré-production utilisent toutes deux app.monsite.tn).

Quand utiliser plusieurs clés sur un même domaine ?

Cela permet d’avoir des clés à durée de vie courte (rotation, A/B testing) tout en partageant la même liste de domaines, ou d’isoler la consommation de plusieurs équipes / produits sur un même site.

Comportement à l’exécution

À chaque requête authentifiée par une clé qui a au moins un domaine lié, le backend :

  1. Lit le header Origin de la requête. S’il est présent et figure dans la liste des domaines autorisés → la requête passe.
  2. Sinon, lit le header Referer. S’il est présent et figure dans la liste → la requête passe.
  3. Sinon, la requête est rejetée avec un statut 403 : {"error":"domain not authorized"}.

Cas particulier — appels server-to-server (Node, PHP, mobile natif…) : ni Origin ni Referer n’est envoyé. Dans ce cas, la liste de domaines est ignorée et la clé fonctionne sans restriction. Voir Authentification pour le détail.

Délier ou supprimer un domaine

  • Délier d’une clé : ouvrez la clé, puis cliquez sur l’icône × à côté du domaine dans la section Authorized Domains. La clé reste active mais ne fonctionnera plus depuis ce domaine.
  • Supprimer un domaine : ouvrez Authorized Domains, cliquez sur le domaine, puis sur Delete domain. Le domaine est délié de toutes les clés en une seule opération.
Action de suppression d'un domaine autorisé avec confirmation.
Action de suppression d'un domaine autorisé avec confirmation.

Bonnes pratiques

  • Restreignez les clés exposées au navigateur dès la création — n’attendez pas une fuite.
  • Distinguez prod et dev : pour la prod, listez uniquement vos domaines réels ; pour le dev, utilisez une clé dédiée avec localhost ajouté.
  • Pour le mobile / backend, créez une clé séparée sans aucun domaine : la liste blanche ne s’applique pas (pas d’Origin/Referer) et c’est plus clair que de lister manuellement l’absence de check.
  • Auditez régulièrement les liens clé ↔ domaine : retirez les domaines obsolètes pour réduire la surface d’attaque.