Montar SquadSolicitar Orçamento
Engenharia31 de agosto de 20265 min de leitura

Integração com Salesforce trava na autenticação, não na API

Integração com Salesforce falha quando o fluxo OAuth escolhido exige login humano no navegador. Veja qual fluxo serve para servidor, o que ele exige e a exceção que derruba o plano.

Índice do artigo
faltam 5 min de leitura

A integração está configurada, o fluxo OAuth foi implementado conforme a documentação, e o token só sai quando uma pessoa autorizada abre o navegador e faz login. Um servidor não faz isso às três da manhã.

Esse é um dos momentos mais frustrantes de um projeto de integração com CRM, porque tudo parece certo. As credenciais estão corretas, o endpoint responde, a documentação foi seguida. E, ainda assim, a integração não roda sozinha.

O diagnóstico costuma demorar porque a equipe procura o erro no lugar errado. Não há erro. O fluxo de autenticação escolhido simplesmente foi desenhado para outra coisa.

Resumo do artigo

  • OAuth não é um fluxo único. É uma família, e vários membros dela pressupõem um humano diante de uma tela de consentimento.
  • Para integração entre servidores, a Salesforce documenta o JWT bearer flow como o caminho para ambientes automatizados que não suportam login interativo em navegador.
  • Ele exige certificado digital, chave privada, connected app com a chave pública registrada e a consumer key desse app.
  • Há uma exceção que derruba o desenho: organização com autenticação de nível elevado pede verificação de identidade e bloqueia o fluxo sem interação.

O sintoma: tudo certo e nenhum token

Em um projeto de portal para um fabricante de equipamentos médicos, o time configurou o fluxo OAuth2 exatamente conforme o material recebido do outro lado. A conexão respondia. E, para obter o token de acesso, era necessário que um usuário autorizado da organização fizesse login na tela do Salesforce.

Para uma integração que precisa sincronizar dados continuamente, isso não é uma inconveniência: é um impedimento estrutural. Ninguém vai renovar token na mão todo dia, e uma integração que depende de alguém estar acordado não é uma integração.

  1. Etapa 1 parece resolvido
    O fluxo OAuth é implementado conforme a documentação recebida

    Credenciais corretas, endpoint respondendo, nenhum erro no console.

  2. Etapa 2 a descoberta
    O token só é emitido depois de um login humano na tela

    A equipe procura defeito na configuração por dias, porque nada está tecnicamente errado.

  3. Etapa 3 o reenquadramento
    A pergunta muda de "onde está o erro" para "qual fluxo serve para servidor"

    O problema deixa de ser de implementação e passa a ser de escolha de fluxo.

  4. Etapa 4 o desenho correto
    Fluxo baseado em certificado, sem navegador no caminho

    A dependência sai da presença de uma pessoa e passa para uma chave que a empresa controla.

O que isso destrava, em termos de projeto: reconhecer o sintoma cedo economiza a parte mais cara, que é descobrir isso depois de a data de entrega ter sido comunicada ao cliente.

OAuth não é um fluxo, é uma família de fluxos

A confusão nasce aqui. "Usar OAuth" descreve tão pouco quanto "usar HTTP". O que importa é qual fluxo, porque cada um responde a uma pergunta diferente sobre quem está autorizando o quê.

SituaçãoQuem autorizaServe para servidor sozinho?
Usuário conecta a própria conta a um appA pessoa, na tela de consentimentoNão. Pressupõe alguém presente
Aplicativo age em nome de quem está logadoA pessoa, a cada sessãoNão. O contexto é da sessão

A linha de baixo é a que resolve integração empresarial. As de cima não estão erradas: elas respondem outra pergunta, e são a escolha certa quando o produto realmente conecta a conta individual de cada usuário.

O JWT bearer flow existe exatamente para isso

A documentação da Salesforce é explícita sobre a finalidade: o fluxo foi desenhado para ambientes de integração automatizados, aqueles que, nas palavras da própria documentação, não suportam a interatividade humana de fazer login em um navegador.

O mecanismo troca a presença de uma pessoa por prova criptográfica. Em vez de alguém consentir na tela, o sistema apresenta uma asserção assinada com uma chave privada que só ele tem, e a organização valida essa assinatura contra a chave pública previamente registrada. A confiança deixa de depender de um evento humano e passa a depender de um segredo que a empresa controla e pode rotacionar.

O que precisa existir antes de escrever código

Quatro peças, e nenhuma delas é código de integração. Vale levantar todas antes de estimar prazo, porque duas dependem de quem administra a organização Salesforce, não da equipe de desenvolvimento.

  1. Um certificado digital, que pode ser autoassinado, gerado com ferramenta padrão de criptografia.
  2. A chave privada correspondente, guardada em cofre de segredos e nunca em repositório.
  3. Um connected app configurado na organização, com a chave pública do certificado registrada nele.
  4. A consumer key desse app, que identifica a aplicação na hora de pedir o token.

Os itens 3 e 4 dependem de acesso administrativo à organização. Em cliente grande, isso costuma significar um chamado interno com fila própria, e é justamente a dependência que precisa entrar no cronograma com nome e data.

A exceção que derruba o desenho

Existe um caso em que todo o plano acima não se sustenta, e ele precisa ser verificado antes, não depois.

Quando a organização usa autenticação de nível elevado, a chamada stepped up authentication, o Salesforce passa a solicitar verificação de identidade, o que impede a autenticação sem interação humana. Se a política de segurança do cliente exige isso, o desenho precisa mudar, e a conversa deixa de ser técnica e passa a ser de governança com a área de segurança da informação.

Sandbox e produção não são o mesmo ambiente

Parece óbvio e derruba integrações na virada. O endereço da organização em sandbox é diferente do de produção, e as credenciais são próprias de cada ambiente: certificado, connected app e consumer key precisam existir dos dois lados.

O padrão que evita a surpresa é tratar o ambiente como configuração desde o primeiro dia, nunca como valor fixo no código, e fazer pelo menos uma execução completa contra produção antes da data de virada, mesmo que só de leitura.

Quem é o usuário da integração

Uma decisão pequena que evita um problema grande: a integração não deve rodar com a conta de uma pessoa.

Conta de funcionário está sujeita a troca de senha por política, a mudança de permissão quando a pessoa muda de área e a desativação quando ela sai da empresa. Qualquer um desses eventos derruba a integração, sempre em um momento em que ninguém está esperando, e o diagnóstico é demorado porque o sintoma não aponta para a causa.

O caminho é um usuário dedicado à integração, com o conjunto mínimo de permissões necessárias e um responsável nomeado. Isso também melhora a auditoria: fica claro no registro o que foi feito pelo sistema e o que foi feito por uma pessoa.

Quando o CRM decide o que o usuário vê

Vale um alerta de produto, porque essa é a segunda armadilha desse tipo de projeto. É comum que o status da pessoa no CRM passe a determinar o que ela enxerga no portal ou no aplicativo.

A regra parece simples de descrever e é cheia de casos de borda. O que acontece com quem acabou de se cadastrar e ainda não foi classificado? O que acontece quando o status muda no CRM enquanto a pessoa está logada? E quando a sincronização falha, o comportamento é liberar ou bloquear?

Essas três perguntas precisam de resposta escrita no contrato de dados, antes da implementação. Sem elas, o comportamento padrão acaba sendo decidido por acidente, e costuma ser o mais restritivo, o que aparece como usuários legítimos sem acesso ao conteúdo que deveriam ver.

Precisa integrar seu CRM a um portal, app ou plataforma?

Solicite um orçamento e resolva a autenticação no desenho, não na semana da entrega.


Perguntas frequentes

Porque o fluxo escolhido foi desenhado para autorizar um usuário humano. Fluxos que abrem tela de consentimento pressupõem alguém presente para aprovar. Integração de servidor precisa de um fluxo que não dependa dessa interação.

Fontes e método

As afirmações sobre o JWT bearer flow vêm da documentação oficial da Salesforce para desenvolvedores, consultada em 31 de agosto de 2026, incluindo a finalidade declarada do fluxo para ambientes automatizados, os pré-requisitos de certificado, chave privada, connected app e consumer key, e a ressalva sobre organizações com autenticação de nível elevado.

O caso citado vem de um projeto executado pelo time da X-Apps em 2025 e foi despersonalizado, já que a relação entre esse cliente e o sistema não é pública. Preços, limites de chamada e níveis de serviço da Salesforce não foram apurados e por isso não aparecem no texto.

Post anterior
VTEX e o app da sua loja: quando é preciso uma camada no meio
Próximo post
Por que o orçamento de uma integração estoura
Newsletter

Um e-mail por mês, sem ruído

O que aprendemos entregando software sob medida e IA aplicada.

Artigos similares

O que é DevOps?4 min · Engenharia
Entenda o framework Angular2 min · Engenharia
APIs e microsserviços: a reinvenção da tecnologia2 min · Engenharia
APIs em Blockchain: o que é possível aprender da aplicação?3 min · Engenharia
Docker: armazenamento inteligente2 min · Engenharia

Acelere a sua empresa com a X-Apps

Alocar profissionaisSolicitar Orçamento
A X-Apps é um provedor de TI parceiro e aconselhada pelo
Gartner
Receba nossos e-mails
Siga nossas redes sociais
O seu time de tecnologia e IA. Software sob medida, soluções de IA e alocação de profissionais.
Vamos conversar?
comercial@x-apps.com.br11 5083-0122

Rua Rodrigo Vieira, 126

Jardim Vila Mariana. São Paulo, SP.

CEP: 04115-060

Mapa do site
Termos de serviçoTermos de privacidade
Available in English