Cualquier API que mueva dinero necesita demostrar dos cosas de cada petición: que viene de ti y que no ha sido manipulada ni repetida. La firma HMAC hace ambas. Así funciona y así la usa 0trace.
Qué es la firma HMAC
HMAC (código de autenticación de mensajes basado en hash) combina tu clave secreta con el mensaje para producir una firma. El servidor, que conoce el mismo secreto, recalcula la firma y compara. Si coinciden, la petición es auténtica y no ha sido alterada. 0trace usa HMAC-SHA256.
Firma los bytes exactos
Firma el cuerpo de la petición tal cual se envía, byte a byte. Si serializas el JSON de forma distinta a lo que firmas (claves reordenadas, espacios de más), las firmas no coincidirán. Construye el cuerpo una vez, firma esa cadena y envía esa misma cadena.
Añade un nonce
Una firma por sí sola no impide las repeticiones: quien capture una petición válida podría reenviarla. Un nonce (un valor único por petición) más una ventana temporal acotada hacen que cada petición se acepte una sola vez. 0trace aplica una ventana de repetición basada en nonce.
Guarda el secreto en el servidor
El secreto es lo que hace fiable a la firma, así que nunca debe llegar al navegador ni a un cliente móvil. Firma en tu servidor. Si un secreto se filtra, rótalo.
El contrato de 0trace
- X-API-KEY: tu clave.
- X-API-SIGN: HMAC-SHA256 del cuerpo exacto de la petición, en hexadecimal.
- X-API-NONCE: un valor único por petición, dentro de la ventana de repetición.
- Los precios y los pagos se calculan en el servidor, así que un importe falsificado no puede cambiar lo que realmente se liquida.