Configurer l'authentification Salesforce avec le plugin de support de base OAuth2

En utilisant le plugin OAuth2 Basic Support (inclus dans le cœur de Discourse depuis la version v2025.11.0), vous pouvez configurer l’authentification Salesforce.

Pour ce faire, créez une application connectée OAuth2 sur Salesforce :

  • Créer → Apps → Nouvelle application connectée

  • Assurez-vous d’autoriser l’accès aux « informations de base »

  • Définissez l’« URL de rappel » sur https://VOTREFORUM.COM/auth/oauth2_basic/callback : Notez que votre forum Discourse doit être exécuté avec HTTPS.

  • Notez l’ID client et le secret

Côté Discourse, configurez les paramètres suivants (trouvés sous Admin → Connexion → OAuth2.0) :

  • oauth2 enabled : true
  • oauth2 client id et secret, selon la section précédente
  • 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 (c’est la valeur par défaut, mais assurez-vous qu’elle est activée)
  • 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

Si vous rencontrez des problèmes, assurez-vous d’activer oauth2 debug auth et vérifiez vos /logs.

9 « J'aime »

Merci pour ce post, qui a été inestimable pour la mise en place d’un projet récent nécessitant une connexion Salesforce.

Dans notre cas, l’application Salesforce était une Communauté, ce qui a nécessité de modifier certains des détails ci-dessus. Je poste sur ce vieux fil au cas où cela aiderait d’autres personnes. Cela m’a presque fait exploser la tête pendant une journée entière.

  • URL d’autorisation oauth2 : https://[NOM_COMMUNAUTE].force.com/services/oauth2/authorize
  • URL de token oauth2 : https://[NOM_COMMUNAUTE].force.com/services/oauth2/token
  • Chemin de l’ID utilisateur de rappel oauth2 : id

Les modifications de chemin ont été déterminées progressivement (et péniblement) à partir de la documentation Salesforce et d’autres sources :
https://auth0.com/docs/connections/social/salesforce
Salesforce Help

Cependant, nous avons encore rencontré des erreurs 403 Forbidden, qui étaient du HTML brut sans style et ne ressemblaient guère à une erreur Discourse à mes yeux, ce qui a entraîné de nombreux débogages côté Salesforce et beaucoup de frustration. Mais le problème était dans Discourse.

Interdit

Vous n’avez pas la permission d’accéder à cette ressource.

De plus, une erreur 500 Internal Server Error a été rencontrée lors de la tentative d’utilisation d’un ErrorDocument pour gérer la requête.

Bien que la redirection vers l’URL de rappel semblait fonctionner, la console du navigateur a enregistré des échecs d’authentification. Finalement, c’est le chemin de rappel oauth2 pour l’ID utilisateur non défini qui était la cause de l’échec d’authentification. Le définir sur id a tout résolu.

Tous les autres paramètres sont identiques à ceux du post précédent.

2 « J'aime »

Merci pour les directives. Nous avons réussi à nous authentifier avec succès via Salesforce, mais nous avons rencontré un problème. Nos objets/champs Salesforce ne semblent pas être transmis correctement à Discourse. En effet, juste après une connexion réussie à Salesforce sur Discourse, ce dernier semble traiter l’utilisateur comme nouveau et lui demande de saisir un nom d’utilisateur, une adresse e-mail et un nom, même si ces informations devraient provenir des champs json name, email et username de l’oauth2.

Pourrions-nous solliciter votre aide pour connaître le format json des objets/champs Salesforce utilisés dans le plugin oauth2 ? Nous avons essayé object.field, object_field et simplement field. Cela ne semble générer aucune erreur, mais rien n’est transmis de Salesforce vers Discourse via json pour reconnaître la connexion comme celle d’un utilisateur déjà existant sur Discourse.

Voici une mise à jour : nous avons trouvé une solution à notre problème, il s’agit de ces paramètres de notre côté pour mapper les champs SF.

Il faut configurer les paramètres suivants :

### oauth2 fetch user details - **coché**
### oauth2 user json url - **https://<votresfsite.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**

Nous espérons que cela aidera les autres à trouver une solution pour la connexion oauth2 SF.

2 « J'aime »

Merci pour l’info @sonny.mendoza — je l’ai intégrée aux instructions en haut de ce sujet, afin qu’elle puisse aider d’autres personnes à l’avenir :slight_smile:

3 « J'aime »