0004 jwt edge to vps auth
ADR 004: Autenticação JWT Edge-to-VPS
Status
Aceito
Contexto
O microserviço de automação web vps-scraper (Python/FastAPI via Playwright) expunha a rota POST /scan para requisições do Cloudflare Worker para buscar preços de concorrentes no web crawling manual/fallback.
Inicialmente, esse ecossistema foi protegido usando uma string estática (API_SECRET) através do header X-API-Key.
Contudo, isso representava um Single Point of Failure (SPOF) crítico caso ferramentas de observabilidade de borda ou inspeções acidentais vazassem a chave hardcoded.
Decisão
Substituir o modelo Base-Keying (Chave Fixa) por Modelos Baseados em Valoração de Tempo (Time-Based Tokens).
O backend Edge (Cloudflare Worker) deve agir como provedor de identidade (IdP) assinando payloads efêmeros como Bearer JWT (Json Web Tokens) a cada requisição ao Scraper, e o Scraper opera estritamente validando tokens contra o algoritmo simétrico (HS256) validando iss (Issuer).
Implementação:
- Worker (Edge): Usa
SignJWTdo pacotejosee cria tokens com 1 minuto de validade (expirationTime). - VPS (Python): Lê e decodifica o JWT
Bearer xxxx.yyyy.zzzzvia pacotepython-jose, garantindo que provém doobrain-worker.
Consequências
- **Positivas**: Interceptação temporal mitigada. Um token capturado se torna inútil em 1 minuto ou menos. Se os segredos se vazam por inspeção do git, a ausência de chaves fixas trafegando nos headers dificulta scanners passivos. Segurança aprimorada seguindo padrão corporativo de Zero-Trust em Microserviços.
- **Negativas**: Atraso irrisório em assinar JWT (milisegundos). Adição de dependência
python-jose. Menor tolerância a dessincronização temporal entre os nós (Drift Toleration) - que os containers em cloudflares NTPs já cobrem bem.