Estoy creando una API REST que recibirá solicitudes como:
GET /api/entities
GET /api/entities?filter=X&sort=Y
Esto parece sencillo: tener el cliente HMAC (ruta + consulta, clave), enviarme un identificador de clave y HMAC en un encabezado o algo, y luego hago lo mismo en el servidor para ver si coinciden.
Aquí está mi preocupación:
POST /api/entities
{ "foo": "bar" }
Si el cliente calcula el HMAC en esa ruta y consulta, teóricamente ese HMAC podría usarse para enviar cualquier cuerpo.
tl; dr ¿Cómo se implementaría correctamente la firma de solicitud para las solicitudes GET, POST, PUT que pueden o no tener un cuerpo JSON?