| 123456789101112131415161718192021 |
- -- Webhooks de CRM: cada empresa possui um segredo HMAC próprio.
- --
- -- O segredo é usado para validar a autenticidade do corpo das requisições
- -- recebidas no endpoint de ingestão de dados de CRM. Como é por empresa,
- -- o segredo de uma empresa nunca consegue assinar dados de outra.
- --
- -- Formato: 32 bytes aleatórios em hexadecimal = 64 caracteres.
- -- Default vazio: a aplicação trata segredo vazio como "não configurado"
- -- e rejeita o webhook (401), evitando aceitar requisições sem proteção.
- ALTER TABLE company
- ADD COLUMN IF NOT EXISTS company_hmac_secret VARCHAR(64) NOT NULL DEFAULT '';
- -- Backfill: gera um segredo para empresas já existentes para que possam
- -- receber webhooks imediatamente. Novos segredos de produção devem ser
- -- gerados pela aplicação via random_bytes (ver Libs\Hmac::generateSecret).
- UPDATE company
- SET company_hmac_secret =
- md5(random()::text || clock_timestamp()::text || company_id::text)
- || md5(random()::text || clock_timestamp()::text || company_id::text || random()::text)
- WHERE company_hmac_secret = '';
|