Saltar al contenido
nvíame
Capítulo 1 de 511 min5 sep 2026

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.

Se completa automáticamente al leer el 80%.

Comentarios (3)

Camila Rojas5 sep 2026

¿Puedo guardar la API key en el frontend si la ofusco?

Equipo nvíameAutor5 sep 2026

No. Todo lo que llega al navegador es público. La API key vive en tu backend y el frontend llama a tu propio endpoint, que valida al usuario antes de enviar.

Matías Herrera5 sep 2026

Lo apliqué en el proyecto del trabajo. La sección «Autenticación por API key y HMAC» me ahorró una discusión larga con el equipo: ahora tenemos un criterio compartido.

Diego Fernández5 sep 2026

¿Hay alguna diferencia importante si lo implemento en un servicio con varias instancias detrás de un balanceador?

Equipo nvíameAutor5 sep 2026

Sí: todo estado que hoy vive en memoria (contadores, sesiones, claves vistas) debe moverse a un almacén compartido con TTL, como Redis. Si no, cada instancia ve solo una parte de la historia.

Los comentarios se guardan solo en este navegador.