Configure a autenticação do Salesforce usando o plugin de suporte básico OAuth2

Usando o plugin OAuth2 Basic Support (incluído no núcleo do Discourse desde a versão v2025.11.0), você pode configurar a autenticação do Salesforce.

Para isso, crie um aplicativo OAuth2 conectado no Salesforce:

  • Criar → Apps → Novo aplicativo conectado

  • Certifique-se de permitir o acesso a “acessar informações básicas”

  • Defina a “URL de callback” como https://SEUFORUM.COM/auth/oauth2_basic/callback: observe que seu fórum Discourse deve estar rodando com HTTPS.

  • Anote o ID do cliente e o segredo

No lado do Discourse, configure as seguintes opções (encontradas em Admin → Login → OAuth2.0):

  • oauth2 enabled: true
  • oauth2 client id e secret, conforme seção anterior
  • oauth2 authorize url: https://login.salesforce.com/services/oauth2/authorize
  • oauth2 token url: https://login.salesforce.com/services/oauth2/token
  • oauth2 fetch user details: true (este é o padrão, mas certifique-se de que esteja habilitado)
  • oauth2 user json url: https://login.salesforce.com/services/oauth2/userinfo
  • oauth2 json user id path: user_id
  • oauth2 json username path: preferred_username
  • oauth2 json name path: name
  • oauth2 json email path: email
  • oauth2 email verified: true
  • oauth2 authorize options: scope, display, immediate, state

Se estiver tendo problemas, certifique-se de habilitar oauth2 debug auth e verifique seus /logs.

9 curtidas

Obrigado por este post, que foi inestimável para configurar um projeto recente que exigia login no Salesforce.

No nosso caso, o aplicativo do Salesforce era uma Comunidade, o que significou que tivemos que alterar alguns dos detalhes acima. Estou postando neste tópico antigo caso ajude mais alguém. Quase me fez perder o juízo por um dia inteiro.

  • URL de autorização oauth2: https://[NOME_DA_COMUNIDADE].force.com/services/oauth2/authorize
  • URL de token oauth2: https://[NOME_DA_COMUNIDADE].force.com/services/oauth2/token
  • Caminho do ID de usuário de retorno de chamada oauth2: id

As alterações de caminho foram descobertas gradualmente (e com muita dor) a partir da documentação do Salesforce e de outras fontes:
https://auth0.com/docs/connections/social/salesforce
Salesforce Help

No entanto, ainda tivemos problemas com erros 403 Forbidden, que eram HTML puro sem estilo e não pareciam muito com um erro do Discourse para mim, o que levou a muita depuração no Salesforce e muita frustração. Mas o problema estava no Discourse.

Proibido

Você não tem permissão para acessar este recurso.

Além disso, ocorreu um erro 500 Internal Server Error ao tentar usar um ErrorDocument para processar a solicitação.

Embora o redirecionamento para a URL de retorno de chamada parecesse funcionar, o console do navegador registrava falhas de autenticação. No final, foi o não definido oauth2 callback user id path que causou a falha de autenticação. Definir como id corrigiu tudo.

Todas as outras configurações como no post anterior.

2 curtidas

Obrigado pelas diretrizes. Conseguimos autenticar com sucesso usando o Salesforce, mas encontramos um problema. Nossos objetos/campos do SF parecem não estar sendo transmitidos com sucesso para o Discourse. Logo após um login bem-sucedido no SF no Discourse, parece que o Discourse o trata como um novo usuário e solicita nome de usuário, e-mail e nome, mesmo que esses dados devam vir dos campos json name, email e username do oauth2.

Podemos pedir ajuda para conhecer o formato json dos objetos/campos do SF usados no plugin oauth2? Tentamos object.field, object_field e apenas field. Parece que não há nenhum erro, mas nada está sendo transmitido do SF para o Discourse via json para reconhecer o login como não sendo de um novo usuário do Discourse.

Apenas uma atualização aqui: encontramos uma solução para nosso problema, configurando estes parâmetros do nosso lado para mapear os campos do SF.

Configurações obrigatórias:

### oauth2 fetch user details - **marcado**
### oauth2 user json url - **https://<sua-sitedosf.com>/services/oauth2/userinfo**
### oauth2 user json url method - **get**
### oauth2 json user id path - **user_id**
### oauth2 json username path - **preferred_username**
### oauth2 json name path - **name**
### oauth2 json email path - **email**

Esperamos que isso ajude outros que estejam procurando uma solução para a conexão oauth2 com o SF.

2 curtidas

Obrigado pela informação @sonny.mendoza - Integrei-a nas instruções no topo deste tópico, para que possa ajudar outras pessoas no futuro :slight_smile:

3 curtidas