OBrain Sovereign Engine
Architecture & CoreDecisions

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:

  1. Worker (Edge): Usa SignJWT do pacote jose e cria tokens com 1 minuto de validade (expirationTime).
  2. VPS (Python): Lê e decodifica o JWT Bearer xxxx.yyyy.zzzz via pacote python-jose, garantindo que provém do obrain-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.

On this page