Signature plenigo

Prev Next

Remarques préliminaires

Chaque callback provenant du système Frisbii Media est doté d'une signature, qui se trouve dans l'en-tête, afin de garantir que l'appel provient d'une source fiable et n'a pas été manipulé.


Vérifier la signature plenigo

Chaque callback est signé via un en-tête de signature. Cet en-tête s'appelle plenigo-signature et se présente comme suit :

t=1729583536,s=fdcd0a0ccd0b4db629d35a33c3aada5cf669a28f91adb38abcc9ffcdb1663d38

L'en-tête contient deux éléments : un horodatage indiquant le moment où le callback a été généré (t) et un code d'authentification de message basé sur un hachage (HMAC) avec SHA-256 (s).

Résumé :

plenigo-signature: t=<zeitstempel>,s=<signatur>
  • t = horodatage Unix (secondes depuis l'epoch)

  • s = signature HMAC-SHA256 (encodée en hexadécimal)

Comment créer la signature

Frisbii Media calcule la signature selon les étapes suivantes :

  1. Récupérer l'horodatage actuel sous forme de chaîne de caractères

  2. Relier l'horodatage et les données brutes du corps par un point (.)

  3. Générer un HMAC avec SHA256, en utilisant le secret de callback de Frisbii Media

  4. Définir l'en-tête :

    plenigo-signature: t=timestamp,s=signature

Pour faciliter la logique spécifique au versioning, chaque requête de callback contient également l'en-tête HTTP :

X-Plenigo Api version

Vérifier l'en-tête

Étape 1 : extraire les horodatages et les signatures de l'en-tête

Le contenu de l'en-tête peut être séparé avec le caractère « , » (virgule) pour obtenir une liste d'éléments. Chaque élément peut être divisé en une paire de données constituée d'un préfixe et d'une valeur en utilisant le caractère « = » (signe égal) comme séparateur.

Valeurs des préfixes :

  • « t » = horodatage

  • « s » = une ou plusieurs signatures

Tous les autres éléments peuvent être ignorés.

Étape 2 : préparer la chaîne « signed_payload »

La chaîne « signed_payload » est créée par une concaténation :

  • l'horodatage sous forme de chaîne

  • le caractère « . » (point)

  • la charge utile JSON réelle (c'est-à-dire le contenu de la requête) sous forme de chaîne

Étape 3 : déterminer la signature attendue

Un code d'authentification HMAC avec une fonction de hachage SHA256 est nécessaire. Le secret de signature du point de terminaison est utilisé comme clé et la chaîne de caractères « signed_payload » est utilisée comme message.

Étape 4 : comparer les signatures

La signature (ou les signatures) figurant dans l'en-tête doit être comparée à la signature attendue. Pour la comparaison, vous devez calculer la différence entre l'horodatage actuel et l'horodatage reçu afin de décider si cette différence se situe dans une tolérance acceptable.

Remarque

Si l'horodatage remonte trop loin dans le passé, nous vous recommandons de ne plus utiliser ce callback pour le traitement des données, car cela peut entraîner une incohérence des données, en particulier pour les données clients.

Voici un exemple de traitement du callback reçu :