🔐 Fluxo de Autenticação
O iFood utiliza uma infraestrutura robusta baseada em Keycloak. Este projeto implementa o fluxo de autenticação programática sem a necessidade de um navegador aberto (Headless).
🛡️ Protocolo PKCE
O sistema utiliza o protocolo Proof Key for Code Exchange (PKCE), que é o padrão de segurança mais moderno para aplicações nativas e SPA.
- Gera um par
code_verifierecode_challenge. - Inicia o fluxo com o Keycloak enviando o challenge.
- Troca o código recebido pelo token final enviando o verifier original.
📧 Fluxo com OTP (One-Time Password)
Para contas com verificação em duas etapas habilitada:
- O sistema solicita automaticamente o envio do código para o e-mail do parceiro.
- O aplicativo abre um prompt interativo:
Digite o código OTP enviado para seu e-mail:. - Após a inserção, o fluxo de troca de tokens continua automaticamente.
🔄 Renovação de Token (Refresh)
Os tokens do iFood expiram em intervalos regulares. Nosso sistema gerencia isso de duas formas:
- Pró-ativa: Antes de cada polling, verifica se o token expira nos próximos 5 minutos.
- Reativa: Se a API retornar um erro
401 Unauthorized, o sistema tenta renovar o token e repetir a operação.
🧪 Segurança dos Dados
- TokenStore: Os tokens são salvos de forma criptografada (ou serializada) localmente em
ifood_client.json. - Sensibilidade: Nunca compartilhe este arquivo ou suas credenciais
.env.
Para ver como estes tokens são usados nas requisições, consulte o Cliente de API.