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

Thanks for this post, which was invaluable in setting up a recent project, which required Salesforce login.

In our case, the Salesforce app was a Community, which meant we had to change some of the details above. I’m posting on this old thread in case it helps anyone else. It nearly broke my brain for a whole day.

  • oauth2 authorize url: https://[COMMUNITY_NAME].force.com/services/oauth2/authorize
  • oauth2 token url: https://[COMMUNITY_NAME].force.com/services/oauth2/token
  • oauth2 callback user id path: id

The path changes were worked out gradually (and painfully) from Salesforce and other documentation:
https://auth0.com/docs/connections/social/salesforce
Help And Training Community

However we still had problems with 403 Forbidden errors, which were plain unstyled HTML and didn’t look very much like a Discourse error to me, which led to much debugging of Salesforce and gnashing of teeth. But the problem was in Discourse.

Forbidden

You don’t have permission to access this resource.

Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.

Although the redirect to Callback URL seemed to be working, the browser console registered authentication failures. In the end it was the unset oauth2 callback user id path which was the cause of the authentication failure. Setting it to id fixed everything.

All other settings as in previous post.

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