Salesforce-Authentifizierung mit dem OAuth2-Basis-Support-Plugin einrichten

Mit dem OAuth2 Basic Support-Plugin (seit v2025.11.0 im Discourse-Kern enthalten) können Sie die Salesforce-Authentifizierung einrichten.

Dazu erstellen Sie eine verbundene OAuth2-App bei Salesforce:

  • Erstellen → Apps → Neue verbundene App

  • Stellen Sie sicher, dass der Zugriff auf „grundlegende Informationen" (access basic information) erlaubt ist.

  • Legen Sie die „Callback-URL" auf https://IHRFORUM.COM/auth/oauth2_basic/callback fest: Hinweis: Ihr Discourse-Forum muss mit HTTPS ausgeführt werden.

  • Notieren Sie sich die Client-ID und das Client-Geheimnis.

Auf der Discourse-Seite konfigurieren Sie folgende Einstellungen (zu finden unter Admin → Anmeldung → OAuth2.0):

  • oauth2 enabled: true
  • oauth2 client id und secret, wie im vorherigen Abschnitt beschrieben
  • 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 (dies ist der Standard, stellen Sie jedoch sicher, dass es aktiviert ist)
  • 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

Bei Problemen stellen Sie sicher, dass oauth2 debug auth aktiviert ist, und prüfen Sie Ihre /logs.

9 „Gefällt mir“

Danke für diesen Beitrag, der beim Einrichten eines kürzlichen Projekts, das einen Salesforce-Login erforderte, unschätzbar wertvoll war.

In unserem Fall handelte es sich bei der Salesforce-App um eine Community, was bedeutete, dass wir einige der oben genannten Details ändern mussten. Ich poste hier in diesem alten Thread, falls es anderen hilft. Es hat mir fast einen ganzen Tag lang den Kopf verdreht.

  • oauth2-Autorisierungs-URL: https://[COMMUNITY_NAME].force.com/services/oauth2/authorize
  • oauth2-Token-URL: https://[COMMUNITY_NAME].force.com/services/oauth2/token
  • Pfad für die Benutzer-ID des oauth2-Callbacks: id

Die Änderungen an den Pfaden wurden schrittweise (und schmerzhaft) anhand der Dokumentation von Salesforce und anderen Quellen ermittelt:
https://auth0.com/docs/connections/social/salesforce
Salesforce Help

Dennoch hatten wir weiterhin Probleme mit 403 Forbidden-Fehlern, die als unformatierter HTML-Code erschienen und für mich kaum wie ein Discourse-Fehler aussahen. Das führte zu viel Fehlersuche in Salesforce und verzweifeltem Kopfschütteln. Das Problem lag jedoch in Discourse.

Verboten

Sie haben keine Berechtigung, auf diese Ressource zuzugreifen.

Beim Versuch, ein ErrorDocument zur Bearbeitung der Anfrage zu verwenden, trat zudem ein 500 Internal Server Error auf.

Obwohl die Weiterleitung zur Callback-URL scheinbar funktionierte, meldete die Browserkonsole Authentifizierungsfehler. Am Ende war es der nicht gesetzte oauth2 callback user id path, der die Authentifizierungsfehler verursachte. Das Setzen auf id hat alles behoben.

Alle anderen Einstellungen wie im vorherigen Beitrag.

2 „Gefällt mir“

Vielen Dank für die Richtlinien. Wir konnten uns erfolgreich mit Salesforce authentifizieren, sind jedoch auf ein Problem gestoßen. Unsere SF-Objekte/Felder werden anscheinend nicht erfolgreich an Discourse übergeben. Direkt nach einer erfolgreichen SF-Anmeldung auf Discourse scheint Discourse den Benutzer als neuen Benutzer zu behandeln und fragt nach Benutzername, E-Mail und Namen, obwohl diese Werte eigentlich aus den OAuth2-JSON-Feldern name, email und username stammen sollten.

Könnten Sie uns bitte helfen, das JSON-Format für die in der OAuth2-Plugin verwendeten SF-Objekte/Felder zu erfahren? Wir haben object.field, object_field und einfach field ausprobiert. Es scheint zwar keine Fehlermeldung zu geben, aber es werden trotzdem keine Daten von Salesforce an Discourse über JSON übergeben, um die Anmeldung als keine neue Discourse-Benutzeranmeldung zu erkennen.

Hier ein Update: Wir haben eine Lösung für unser Problem gefunden. Diese Einstellungen müssen wir auf unserer Seite vornehmen, um SF-Felder zu mappen.

Folgende Einstellungen sind erforderlich:

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

Wir hoffen, dass dies anderen hilft, die nach einer Lösung für die oauth2 SF-Verbindung suchen.

2 „Gefällt mir“

Danke für die Info @sonny.mendoza – ich habe sie in die Anweisungen am Anfang dieses Themas aufgenommen, damit sie auch anderen Leuten in Zukunft helfen kann :slight_smile:

3 „Gefällt mir“