DocsSécuritéRestrictions géographiques

Restrictions géographiques

Limitez l'ouverture d'un transfert à certaines zones avec geo_allowlist et geo_blocklist, et surveillez les accès refusés grâce à l'évènement transfer.geo_blocked.

Sécurité3 min de lectureMis à jour le 10 juin 2026
Télécharger en PDF

Les restrictions géographiques vous permettent de limiter l'ouverture d'un transfert à certaines zones, ou d'en exclure d'autres, sans rien changer au reste de votre intégration. Coffrify évalue le pays d'origine de chaque requête d'accès au moment du téléchargement, à partir de l'adresse IP de l'appelant. Si la politique refuse l'accès, le destinataire reçoit une réponse de blocage et l'évènement transfer.geo_blocked est émis vers vos webhooks. Deux champs facultatifs pilotent ce comportement à la création du transfert : geo_allowlist (liste autorisée) et geo_blocklist (liste interdite). Tout se passe côté serveur, y compris en mode de bout en bout : la décision d'autoriser ou de refuser l'accès ne dépend jamais de la lecture du contenu du fichier.

Les deux champs

Vous renseignez geo_allowlist et/ou geo_blocklist dans le corps de POST /v1/transfers. Les deux champs sont des tableaux de codes pays et sont indépendants : vous pouvez utiliser l'un, l'autre, ou les deux ensemble. Laissez-les vides ou absents pour ne poser aucune restriction géographique (comportement par défaut).

ChampTypeEffet
geo_allowlisttableau de codes paysSeuls les pays listés peuvent ouvrir le transfert. Tout pays absent de la liste est refusé.
geo_blocklisttableau de codes paysLes pays listés sont refusés. Tous les autres sont autorisés.
POST/v1/transfersCrée un transfert. Acceptez geo_allowlist et geo_blocklist pour restreindre l'accès par zone. Scope requis : transfers:write.

Créer un transfert restreint

L'exemple suivant crée un transfert ouvrable uniquement depuis la France, la Belgique, le Luxembourg et la Suisse. Comme pour tout transfert, l'appel renvoie un objet transfer, le share_url à partager et les upload_urls vers lesquels téléverser chaque fichier en PUT.

import { Coffrify } from '@coffrify/sdk';
 
const coffrify = new Coffrify({ apiKey: process.env.COFFRIFY_API_KEY });
 
const { transfer, upload_urls, share_url } = await coffrify.transfers.create(
[{ name: 'contrat.pdf', size: 482133, mime_type: 'application/pdf' }],
{
transfer_title: 'Contrat cadre',
geo_allowlist: ['FR', 'BE', 'LU', 'CH'],
}
);
 
console.log(share_url);
// Téléversez ensuite chaque fichier vers upload_urls[i].url en PUT.

À l'inverse, pour autoriser le monde entier sauf quelques pays, utilisez geo_blocklist. Ici, le transfert s'ouvre partout sauf depuis la Russie et la Corée du Nord.

curl -X POST https://api.coffrify.com/v1/transfers \
-H "Authorization: Bearer $COFFRIFY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"files": [{ "name": "rapport.pdf", "size": 91044, "mime_type": "application/pdf" }],
"geo_blocklist": ["RU", "KP"]
}'

Comment la décision est prise

Lorsqu'un destinataire tente d'ouvrir le transfert, Coffrify détermine son pays d'origine à partir de l'adresse IP de la requête, puis applique vos listes. La logique est la suivante, dans cet ordre :

  • Si une geo_allowlist est définie et que le pays de l'appelant n'y figure pas, l'accès est refusé.
  • Si le pays de l'appelant figure dans la geo_blocklist, l'accès est refusé.
  • Sinon, l'accès se poursuit vers les autres contrôles éventuels (mot de passe, code TOTP, etc.).

Réponse en cas de blocage

Quand un accès est refusé par la politique géographique, la requête d'ouverture renvoie un statut HTTP 451 et un corps indiquant le motif, l'adresse IP observée et la zone détectée. Le destinataire voit une page de refus ; aucune URL de téléchargement n'est délivrée.

{
"error": "GEO_BLOCKED",
"ip": "203.0.113.42",
"region": "US"
}

L'évènement transfer.geo_blocked

À chaque refus géographique, Coffrify émet l'évènement transfer.geo_blocked vers les webhooks abonnés du workspace. Vous pouvez l'utiliser pour alerter votre équipe conformité, journaliser les tentatives d'accès hors zone, ou déclencher une revue. La charge utile identifie le transfert concerné et la zone refusée.

ChampDescription
transfer_idIdentifiant du transfert concerné.
short_codeCode court du transfert.
ip_addressAdresse IP de la requête refusée.
regionCode pays détecté pour la requête (ISO 3166-1 alpha-2).

Pour recevoir cet évènement, abonnez-y un webhook. Pensez à inclure transfer.geo_blocked dans la liste events, car les webhooks n'écoutent par défaut que transfer.downloaded.

curl -X POST https://api.coffrify.com/v1/webhooks \
-H "Authorization: Bearer $COFFRIFY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://exemple.fr/webhooks/coffrify",
"events": ["transfer.geo_blocked"]
}'

Cette page vous a-t-elle aidé ?
Anonyme, dédupliqué 24h par signature locale.