Autenticación por API key y HMAC
Claves, secretos y firmas: qué protege cada mecanismo y cuándo combinarlos.
Una API key identifica a quien llama. Una firma HMAC prueba que el contenido de la petición no fue alterado y que quien la generó conoce un secreto compartido. Resuelven problemas distintos.
API keys
La forma más común: un header Authorization: Bearer sk_live_.... Es simple y suficiente sobre HTTPS, siempre que la clave nunca salga del servidor, se rote periódicamente y tenga permisos mínimos.
- Usa claves distintas por entorno (
sk_test_,sk_live_). - Restringe por IP o por permiso cuando el proveedor lo permita.
- Guárdalas en un gestor de secretos, nunca en el repositorio.
HMAC
HMAC-SHA256 combina un secreto con el contenido del mensaje y produce un hash. Si un byte del cuerpo cambia, la firma cambia por completo. Quien recibe recalcula la firma con el mismo secreto y compara.
signature = HMAC_SHA256(secret, timestamp + "." + body)Rotación sin interrupciones
Toda credencial se filtra tarde o temprano: en un log, en un repositorio, en una captura de pantalla. Diseña la rotación antes de necesitarla. El patrón estándar es admitir dos claves activas a la vez durante una ventana de transición: emites la nueva, despliegas los clientes, verificas que nadie usa la antigua y recién entonces la revocas.
Guarda las claves en un gestor de secretos y nunca en variables expuestas al navegador. Si una clave aparece en el código del frontend, asume que es pública y rótala ese mismo día.