Intégration d’un Webhook avec SESAR : tout ce qu’il faut savoir

Comment intégrer un Webhook avec SESAR ?

Le webhook de SESAR permet de notifier votre système lorsqu'un fichier a été reçu et traité. Il repose sur un appel HTTP contenant un objet structuré, et doit être configuré correctement pour assurer une intégration fluide avec votre environnement.

Lorsqu'un fichier est déposé via SESAR, celui-ci envoie une notification (un « hook ») à une adresse que vous avez définie. Cette notification contient un objet chiffré, qui doit être reçu, déchiffré et traité par votre service.

Prérequis

  • WebHookKey : clé AES 256 bits, générable via SECT Tools.
  • WebHookIv : vecteur d'initialisation (IV) 128 bits, également générable via SECT Tools.
  • Ces deux valeurs sont utilisées pour chiffrer et déchiffrer les StoreManifest, et doivent être protégées dans votre environnement.
Attention : après le premier démarrage de SESAR, ces valeurs sont cryptées dans un fichier « .sesar » propre à votre configuration. Ce fichier ne doit pas être déplacé.

Étape 1 : Préparer l'adresse de réception du webhook

  1. Publiez sur votre serveur le point d'entrée qui recevra les notifications de SESAR.
  2. Donnez à ce point d'entrée une URL qui suit le format https://[adresse_serveur]/[endpoint]/[methode]
  3. Configurez ce point d'entrée pour accepter une requête POST envoyée avec l'en-tête Content-Type: application/json.

Par exemple : https://localhost/Test.asmx/SESARHook

Étape 2 : Recevoir et lire la notification

  1. Récupérez le corps de la requête POST envoyée par SESAR.
  2. Lisez le champ CryptedObject : il contient le manifeste chiffré en base64.
  3. Lisez le champ HashKey : il contient le SHA512 de la clé publique utilisée pour le chiffrement, également en base64.

Le corps de la requête a la forme suivante :

{
"args": {
"CryptedObject": "...",
"HashKey": "..."
}
}

Voici deux exemples d'implémentation en C#.

En ASMX

[WebMethod]
[ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]
public void SESARHook(SesarWebHook args)
{
// Traitement ici
}

En ASP.NET MVC

[HttpPost]
public string SESARHook([FromBody] HookArgs SEManifest)
{
var crypted = SEManifest.args.CryptedObject;
var hash = SEManifest.args.HashKey;

// Traitement ici
return "OK";
}

public class HookArgs
{
public SesarWebHook args { get; set; }
}

public class SesarWebHook
{
public string CryptedObject { get; set; }
public string HashKey { get; set; }
}

Étape 3 : Déchiffrer le CryptedObject

  1. Utilisez le SDK de Secure Exchanges pour déchiffrer l'objet reçu, le StoreManifest.
  2. Fournissez la clé AES 256 bits dans base64Key et le vecteur d'initialisation (IV) 128 bits dans base64Iv.
  3. Désérialisez le résultat obtenu en objet StoreManifest.
var jsonObject = CryptoHelper.DecryptStringFromBytes(
Convert.FromBase64String(cryptedObject),
Convert.FromBase64String(base64Key),
Convert.FromBase64String(base64Iv)
);
StoreManifest manifest = SerializationHelper.DeserializeFromJson<StoreManifest>(jsonObject);

Dépannage

Le webhook fonctionne selon les règles suivantes :

  • Le webhook est appelé toutes les 30 secondes si des fichiers sont disponibles.
  • Un code HTTP 200 signifie que le traitement a réussi.
  • Si le webhook échoue ou retourne un autre code, il sera réessayé.
  • Le délai d'attente de la réponse est de 5 minutes.

Besoin d'aide ?

Notre équipe est disponible pour vous accompagner. Écrivez-nous à support@secure-exchanges.com

Articles connexes