Estado atual

O Kulinaryos oferece dois caminhos na tela principal de acesso: e-mail e senha, ou Entrar com Google. O botão Google leva diretamente à escolha de conta do Google, passa pelo ZITADEL da Food Process e retorna ao Kulinaryos com uma sessão da conta existente. A recuperação da senha atual envia um link por e-mail transacional pelo Brevo. O acesso foi validado em UAT antes da promoção para PROD.

Este registro encerra a etapa de consolidação do login iniciada após falhas e atritos observados na autenticação: a entrada social exigia uma tela intermediária pouco clara, contas existentes precisavam de uma regra segura de vínculo e links de recuperação não levavam sempre ao formulário de nova senha. A autorização de uso do produto e as licenças continuam sob a responsabilidade do CRM e do ADM; serão integradas à identidade em uma etapa posterior.

Como o fluxo funciona hoje

  • Senha existente: o formulário do Kulinaryos envia as credenciais à API Go, que autentica a conta atual. Os usuários não precisaram trocar de senha para receber o botão Google.
  • Recuperação: a API Go gera um pedido de redefinição de uso único e envia a mensagem pelo Brevo, com info@kulinaryos.com como remetente. O link abre o formulário de nova senha no app; depois da troca, o usuário pode iniciar outra sessão com a senha escolhida.
  • Google: o frontend inicia OIDC na API Go com provider=google. A API redireciona pelo ZITADEL, que continua sendo o emissor da identidade. O fluxo preserva PKCE, state e nonce; o navegador chega ao seletor do Google e retorna pelo callback da API. O botão só é exibido quando a API informa que o provedor está ativo.
  • Ambientes: UAT e PROD têm clientes OIDC, callbacks, credenciais e bancos do produto separados. Compartilham a instância central do ZITADEL e seu diretório de identidades. A restrição de acesso ao UAT vale para qualquer método de login.

O ZITADEL self-hosted, com PostgreSQL no cluster da Food Process, fornece a camada central de identidade e a federação com o Google. As senhas legadas do produto e sua redefinição ainda são tratadas pela API Go com Brevo. Registrar essa fronteira é importante: a presença do ZITADEL no fluxo Google não significa que todas as senhas existentes já tenham sido migradas para ele.

Vínculo automático sem fila de aprovações

Quando o Google confirma um Gmail verificado que coincide com o e-mail de uma conta existente, a API vincula a identidade central àquela conta automaticamente. O usuário entra na conta que já tinha, sem cadastro duplicado e sem uma liberação individual por gestores. Se os e-mails forem diferentes, a pessoa pode provar a posse da conta existente com sua senha e concluir o vínculo por conta própria. Nome ou semelhança entre endereços não autoriza vínculo automático.

Essa regra separa autenticação de autorização. No desenho do ecossistema, o CRM é a autoridade para cadastro, licenças e permissões de uso; escolher Google ou senha não cria uma licença nem amplia privilégios. O acesso restrito ao ambiente de teste também permanece uma política do UAT, aplicada igualmente aos dois métodos.

O que mudou em 3 de outubro

Primeiro promovemos a API com o vínculo automático das contas existentes e a interface pública em seis idiomas, incluindo login e recuperação. Em seguida, atualizamos o ZITADEL para v4.19.2, depois de verificar um backup externo e uma restauração isolada do banco. A versão anterior estava abrangida pelo aviso de segurança GHSA-g8gj-gq47-xgf4. A atualização ocorreu antes de expor o início direto com Google em PROD.

Depois implantamos em sequência a API Go que inicia OIDC diretamente no provedor Google e o frontend com o botão Entrar com Google. O antigo botão genérico “Food Process” saiu da tela principal. Cada promoção usou uma imagem imutável via GitOps; a API foi validada antes da troca da imagem do app.

Evidência de funcionamento

  • Em UAT, o fluxo Google real vinculou uma identidade à conta já cadastrada e chegou ao dashboard sem criar outra conta. Também concluímos a recuperação pelo Brevo, saímos da sessão e entramos com a nova senha.
  • Em PROD, a API publicada retornou Google ativo; o redirecionamento percorreu API → ZITADEL → Google. Na interface publicada, o botão abriu a escolha de conta Google e retornou uma conta existente ao dashboard autenticado.
  • O login por senha, a saída da sessão e a recuperação por e-mail já haviam sido exercitados em PROD durante esta consolidação. As rotas continuam disponíveis ao lado do novo botão.
  • Após a promoção, API, frontend e identidade estavam prontos; o ArgoCD voltou a Synced/Healthy. Um certificado pendente de prova.kulinaryos.com, pertencente a uma demonstração pública separada, foi resolvido com a publicação de seu registro DNS. Esse endereço não faz parte do fluxo de login.

Próximas etapas

Esta entrega estabelece uma base funcional para os usuários atuais. A próxima sessão de engenharia tratará do endurecimento das políticas de identidade: MFA administrativo, revisão de sessões e recuperação, limites contra abuso, observabilidade e alertas. Depois, conectaremos a autenticação às decisões de autorização, licenças e cadastro do CRM. O Brevo permanece o serviço de e-mail transacional da Food Process.

Registro de mudanças