Passer au contenu principal
Pour vérifier que les requêtes que votre intégration reçoit de HubSpot proviennent bien de HubSpot, plusieurs en-têtes sont renseignés dans la requête. Vous pouvez utiliser ces en-têtes ainsi que les champs de la requête entrante pour vérifier la signature de la requête. La méthode utilisée pour vérifier la signature dépend de la version de la signature :
  • Pour valider une requête à l’aide de la dernière version de la signature HubSpot, utilisez l’en-tête X-HubSpot-Signature-V3 et suivez les instructions associées pour valider la version 3 de la signature.
  • Pour la rétrocompatibilité, les requêtes de HubSpot incluent également les anciennes versions de la signature. Pour valider une ancienne version de la signature, consultez l’en-tête X-HubSpot-Signature-Version, puis suivez les instructions associées ci-dessous selon la version v1 ou v2.
Dans les instructions ci-dessous, découvrez comment obtenir une valeur de hachage à partir du secret client de votre application et des champs d’une requête entrante. Une fois que vous avez calculé la valeur de hachage, comparez-la à la signature. Si les deux sont égales, la requête a été validée avec succès. Autrement, cette requête peut avoir été modifiée en transit ou quelqu’un peut usurper les requêtes à votre point de terminaison.

Valider les requêtes à l’aide de la signature de requête v1

Si votre application est abonnée aux événements d’objet CRM via l’API des webhooks, les requêtes de HubSpot seront envoyées avec l’en-tête X-HubSpot-Signature-Version défini sur v1. L’en-tête X-HubSpot-Signature sera un hachage SHA-256 conçu à l’aide du secret de client de votre application associé à des détails de la requête. Pour vérifier la version de cette signature, effectuez les étapes suivantes :
  • Créez une chaîne qui regroupe les éléments suivants : Client secret + request body (le cas échéant)
  • Créez un hachage SHA-256 de la chaîne résultante
  • Comparez la valeur de hachage à la valeur de l’en-tête X-HubSpot-Signature :
    • Si elle est égale, cette requête a été validée
    • Si ces valeurs sont différentes, cette requête peut avoir été modifiée en transit ou quelqu’un peut usurper les requêtes à votre point de terminaison.
Exemple de requête avec un corps :

Exemples de signatures de requête v1 :

Exemple Python

Exemple Ruby

Exemple Node.js

Exemple Java

Le hachage résultant serait : 232db2615f3d666fe21a8ec971ac7b5402d33b9a925784df3ca654d05f4817de

Valider les requêtes à l’aide de la signature de requête v2

Si votre application gère des données provenant d’une action de webhook dans un workflow ou si vous renvoyez des données pour une carte CRM personnalisée, la requête de HubSpot est envoyée avec l’en-tête X-HubSpot-Signature-Version défini sur v2. L’en-tête X-HubSpot-Signature sera un hachage SHA-256 conçu à l’aide du secret de client de votre application associé à des détails de la requête. Pour vérifier cette signature, effectuez les étapes suivantes :
  • Créez une chaîne qui regroupe les éléments suivants : Client secret + http method + URI + request body (le cas échéant)
  • Créez un hachage SHA-256 de la chaîne résultante
  • Comparez la valeur de hachage à la signature
    • Si elle est égale, cette requête a été validée
    • Si ces valeurs sont différentes, cette requête peut avoir été modifiée en transit ou quelqu’un peut usurper les requêtes à votre point de terminaison.
Remarques :
  • L’URI utilisé pour créer la chaîne source doit correspondre exactement à la requête initiale, y compris le protocole. Si vous rencontrez des difficultés lors de la validation de la signature, assurez-vous que tous les paramètres de requête sont dans le même ordre que dans la requête initiale.
  • La chaîne source doit être encodée en UTF-8 avant de calculer le hachage SHA-256.

Exemple pour une requête GET

Pour une requête GET, vous aurez besoin du secret client de votre application et des champs spécifiques des métadonnées de votre requête. Ces champs sont répertoriés ci-dessous avec des valeurs d’espace réservé incluses :
  • Secret du client : yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
  • Méthode HTTP : GET
  • URI : https://www.example.com/webhook_uri
  • Corps de la requête : ""
La chaîne concaténée résultante serait : yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyyGEThttps://www.example.com/webhook_uri Après avoir calculé un hachage SHA-256 de la chaîne concaténée ci-dessus, la signature résultante que vous vous attendez à faire correspondre à celle de l’en-tête serait : eee2dddcc73c94d699f5e395f4b9d454a069a6855fbfa152e91e88823087200e

Exemple pour une requête POST

Pour une requête POST, vous aurez besoin du secret client de votre application, de champs spécifiques des métadonnées de votre requête et d’une représentation sous forme de chaîne du corps de la requête (par exemple : utilisation de JSON.stringify(request.body) pour un service Node.js). Ces champs sont répertoriés ci-dessous avec des valeurs d’espace réservé incluses :
  • Secret du client : yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
  • Méthode HTTP : POST
  • URI : https://www.example.com/webhook_uri
  • Corps de la requête : {"example_field":"example_value"}
La chaîne concaténée résultante serait : yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyyPOSThttps://www.example.com/webhook_uri{"example_field":"example_value"} Après avoir calculé un hachage SHA-256 de la chaîne concaténée ci-dessus, la signature résultante que vous vous attendez à faire correspondre à celle de l’en-tête serait : 9569219f8ba981ffa6f6f16aa0f48637d35d728c7e4d93d0d52efaa512af7900 Après [SHA-ing] la signature, vous pouvez comparer la signature attendue résultante à celle fournie dans l’en-tête x-hubspot-signature de la requête : Le bloc de code Node.js ci-dessous détaille comment vous pouvez incorporer la validation des requêtes v2 pour une requête GET si vous exécutiez un serveur Express pour gérer les requêtes entrantes. Gardez à l’esprit que le bloc de code ci-dessous est un exemple et omet certaines dépendances dont vous pourriez avoir besoin pour exécuter un service Express complet. Confirmez que vous utilisez les dernières bibliothèques stables et sécurisées lors de la mise en œuvre de la validation des requêtes pour votre service spécifique.

Exemples de signatures de requête v2 :

Exemple Node.js

Exemple Java

Valider les signatures de requête v3

L’en-tête X-HubSpot-Signature-v3 sera un hachage HMAC SHA-256 conçu à l’aide du secret de client de votre application associé à des détails de la requête. Il comprendra également un en-tête X-HubSpot-Request-Timestamp. Lors de la validation d’une requête à l’aide de l’en-tête X-HubSpot-Signature-v3, vous devrez :
  • Rejeter la requête si l’horodatage est supérieur à 5 minutes.
  • Dans l’URI de requête, décoder les caractères encodés en URL répertoriés dans le tableau ci-dessous. Vous n’avez pas besoin de décoder le point d’interrogation qui indique le début de la chaîne de requête.
  • Créer une chaîne encodée en UTF-8 qui regroupe les éléments suivants : requestMethod + requestUri + requestBody + horodatage. L’horodatage est fourni par l’en-tête X-HubSpot-Request-Timestamp.
  • Créer un hachage HMAC SHA-256 de la chaîne résultante en utilisant le secret d’application comme secret pour la fonction HMAC SHA-256.
  • Encoder le résultat de la fonction HMAC en Base64.
  • Comparer la valeur de hachage à la signature. Si elle est égale, cette requête a été validée comme provenant de HubSpot. Il est recommandé d’utiliser une comparaison de chaîne à durée fixe pour éviter les attaques temporelles.
Les blocs de code de la section ci-dessous expliquent comment incorporer la validation de requête v3 pour une requête POST si vous exécutiez un service back-end pour gérer les requêtes entrantes. Gardez à l’esprit que les blocs de code ci-dessous omettent certaines dépendances dont vous pourriez avoir besoin pour exécuter un service back-end complet. Confirmez que vous utilisez les dernières bibliothèques stables et sécurisées lors de la mise en œuvre de la validation des requêtes pour votre service spécifique.

Exemples de signatures de requête v3

Exemple Node.js

Exemple Java

Dernière modification le 10 février 2026