Fintoc-Signature.
Fintoc firma cada evento enviado a tus webhook endpoints con el header Fintoc-Signature. Este header te permite verificar que cada evento recibido fue de hecho enviado por Fintoc y no por un tercero.
Fintoc genera un secreto que se muestra solo una vez al momento del registro de un webhook endpoint. Este secreto es necesario para validar la firma de Fintoc de cada evento.
Verifica que los eventos sean enviados por Fintoc
Cada evento enviado por Fintoc incluye el headerFintoc-Signature. La estructura del header es la misma para cada evento. Contiene un timestamp denotado por la clave t y una firma denotada por la clave v1. Aquí hay un ejemplo de un header Fintoc-Signature:
Validar la firma usando nuestro SDK
Si estás usando Node o Python, verifica las firmas de los webhooks con nuestro SDK de Node o SDK de Python.Validar la firma usando tu propio código
Si quieres escribir tu propia implementación o usar un lenguaje de programación distinto, sigue estos pasos:Extraer el timestamp y la firma del header
Divide el headerFintoc-Signature en un arreglo por el carácter ,. Luego, divide cada elemento del arreglo generado por el carácter = para obtener un par clave-valor. Finalmente, obtén los valores correspondientes para cada clave.
Reconstruir el mensaje firmado
El mensaje que Fintoc firmó antes de enviar el webhook corresponde al timestamp concatenado a un carácter. y al cuerpo en bruto de la solicitud. Reconstruyamos ese mismo mensaje usando el timestamp que acabamos de desempaquetar del header Fintoc-Signature y el cuerpo en bruto de la solicitud.
message debería tener sería el siguiente:
Generar la firma
Ahora que tienes el mensaje que necesita ser firmado, hagamos justamente eso, usando la función hash SHA-256 y el secreto generado al crear el webhook endpoint.Comparar las firmas
Finalmente, comparemos la firma que desempaquetamos del headerFintoc-Signature con la que acabamos de obtener siguiendo los pasos de la guía. Si ambas firmas coinciden, entonces puedes asumir que el evento fue de hecho enviado por Fintoc.
Prevenir un ataque de replay
Para evitar un ataque de replay, define un rango de tolerancia aceptable para la antigüedad de los eventos. Al recibir un evento, compara el timestamp del headerFintoc-Signature con la hora actual. Usa cinco minutos como tolerancia por defecto. Acepta los eventos dentro de ese rango y descarta los que queden fuera.
Prueba la integración
Confirma que la validación de la firma funciona antes de depender de ella en producción. Genera un evento de prueba para tu webhook endpoint desde el Dashboard de Fintoc y revisa cómo responde tu handler:- Con una firma válida, tu handler valida el header y procesa el evento.
- Con una firma inválida, por ejemplo un valor
v1modificado o el secreto incorrecto, tu handler rechaza el evento y retorna400 Bad Request.