Conservar el cuerpo original de la solicitud
Verifique los bytes recibidos antes de analizar/volver a serializar JSON. Incluso los espacios en blanco cambian la MAC. Configure el manejo del cuerpo sin formato de su marco en consecuencia.
Encabezados
Utilice Tembuilder-Event, Tembuilder-Delivery-Id, Tembuilder-Attempt, Tembuilder-Timestamp y Tembuilder-Signature. La firma es v1= más un hexadecimal HMAC-SHA256. El secreto de firma revelado es base64url sin relleno; decodificarlo en bytes primero.
Bytes firmados
timestamp + "." + raw_body
Calcule HMAC-SHA256 con el secreto decodificado y compárelo en tiempo constante.
Marca de tiempo y duplicados
Aplique una ventana de aceptación adecuada en el receptor, por ejemplo de ±5 minutos si resulta apropiado para sus relojes y su operación. Esta es una recomendación para el receptor, no una garantía de tiempo de entrega de Tembuilder. Elimine los ID de entrega duplicados y concilie el estado del negocio mediante el ID de renderizado. No suponga que las notificaciones se reciben exactamente una vez ni en orden.
Prueba antes de la producción
Aceptar una prueba correctamente firmada. Rechace un cambio de cuerpo de un byte y una marca de tiempo obsoleta. Entregue la misma identificación dos veces y verifique que los efectos secundarios comerciales no estén duplicados. Mantenga los secretos y las cargas útiles confidenciales fuera de los registros.