Un resumen de las solicitudes procedentes de HubSpot a una integración.
X-HubSpot-Signature-V3
y sigue las instrucciones asociadas para validar la versión v3 de la firma.X-HubSpot-Signature-Version
, y luego sigue las instrucciones asociadas que aparecen abajo según si la versión es v1
o v2
.X-HubSpot-Signature-Version
definido como v1
. El encabezado X-HubSpot-Signature
será un hash SHA-256 creado usando el secreto del cliente de tu aplicación junto con detalles de la solicitud.
Para verificar esta versión de la firma, realiza los siguientes pasos:
Client secret
+ request body
(si está presente).X-HubSpot-Signature
:
232db2615f3d666fe21a8ec971ac7b5402d33b9a925784df3ca654d05f4817de
X-HubSpot-Signature-Version
definido como v2
. El encabezado X-HubSpot-Signature
será un hash SHA-256 creado usando el secreto del cliente de tu aplicación junto con detalles de la solicitud.
Para verificar esta firma, realiza los siguientes pasos:
Client secret
+ http method
+ URI
+ request body
(si está presente).GET
, necesitarías el secreto del cliente de tu aplicación y campos específicos de los metadatos de la solicitud. Estos campos se enumeran a continuación con valores de marcadores de posición incluidos:
yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
GET
https://www.example.com/webhook_uri
""
yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyyGEThttps://www.example.com/webhook_uri
Después de calcular un hash SHA-256 de la cadena concatenada anterior, la firma resultante que esperarías que coincidiera con la del encabezado sería: eee2dddcc73c94d699f5e395f4b9d454a069a6855fbfa152e91e88823087200e
POST
, necesitarías el secreto del cliente de tu aplicación, campos específicos de los metadatos de la solicitud y una representación de cadena del cuerpo de la solicitud (por ejemplo, usar JSON.stringify(request.body)
para un servicio de Node.js). Estos campos se enumeran a continuación con valores de marcadores de posición incluidos:
yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
POST
https://www.example.com/webhook_uri
{"example_field":"example_value"}
yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyyPOSThttps://www.example.com/webhook_uri{"example_field":"example_value"}
Después de calcular un hash SHA-256 de la cadena concatenada anterior, la firma resultante que esperarías que coincidiera con la del encabezado sería:9569219f8ba981ffa6f6f16aa0f48637d35d728c7e4d93d0d52efaa512af7900
Después de la firma [SHA-ing], podrías comparar la firma esperada resultante con la proporcionada en el encabezado x-hubspot-signature de la solicitud:
El fragmento de código de Node.js que aparece abajo detalla cómo podrías incorporar la validación de solicitudes v2
correspondiente a una solicitud GET
si estuvieras ejecutando un servidor Express para manejar las solicitudes entrantes. Ten en cuenta que el bloque de código que aparece abajo es un ejemplo y omite ciertas dependencias que podrías necesitar para ejecutar un servicio Express con todas las funciones. Confirma que estás ejecutando las bibliotecas estables y seguras más recientes al implementar la validación de solicitudes para tu servicio específico.
X-HubSpot-Signature-v3
será un hash SHA-256 creado usando el secreto del cliente de tu aplicación junto con detalles de la solicitud. También incluirá un encabezado X-HubSpot-Request-Timestamp
.
Al validar una solicitud que utiliza el encabezado X-HubSpot-Signature-v3, deberás
Valor codificado | Valor decodificado |
---|---|
%3A | : |
%2F | / |
%3F | ? |
%40 | @ |
%21 | ! |
%24 | $ |
%27 | ' |
%28 | ( |
%29 | ) |
%2A | * |
%2C | , |
%3B | ; |
requestMethod
+ requestUri
+ requestBody
+ marca de tiempo. La marca de tiempo es proporcionada por el encabezado X-HubSpot-Request-Timestamp
.POST
si estuvieras ejecutando un servicio backend para gestionar las solicitudes entrantes. Ten en cuenta que el bloque de código que aparece abajo es un ejemplo y omite ciertas dependencias que podrías necesitar para ejecutar un servicio Express con todas las funciones. Confirma que estás ejecutando las bibliotecas estables y seguras más recientes al implementar la validación de solicitudes para tu servicio específico.