Esquema
Todas las rutas bajo/api/v1/cep/* requieren el header:
- Extrae el prefijo (
vk_live_xxxxxxxx) y busca la key en la base. - Calcula
HMAC-SHA256(secret_global, api_key_completo)y lo compara en tiempo constante contra el hash almacenado. - Si coincide y la key no está revocada, aplica rate limit y cuota mensual antes de dejar pasar la petición al backend.
El secreto plano de tu key nunca se almacena. Si la pierdes, debes generar una nueva.
Formato de la key
- El prefijo es buscable y aparece en logs/dashboard sin comprometer la key.
- El secreto sólo lo conoces tú al momento de creación.
Crear una key
Desde el dashboard o vía API:Revocar una key
revoked_at con el timestamp actual. La key deja de funcionar inmediatamente; los registros históricos se conservan.
Buenas prácticas
Una key por entorno y servicio
Una key por entorno y servicio
Crea keys distintas para staging, prod y cada microservicio. Si una se compromete, revocas sin downtime global.
Nunca en frontend
Nunca en frontend
El header
x-api-key debe agregarse desde tu backend. Si necesitas hacer descargas desde el navegador, proxea a través de tu API.Rota cada 90 días
Rota cada 90 días
Genera la nueva key, despliégala, y revoca la anterior cuando confirmes que el tráfico migró.
Monitorea uso anómalo
Monitorea uso anómalo
Revisa los logs del dashboard. Picos inesperados → posible filtración.
Sesión de dashboard
Las rutas de gestión (/api/keys, /api/admin/*) usan cookie de Supabase (sb-access-token) emitida al iniciar sesión, no la API key. No mezcles los dos esquemas.