Auth0 mit dem OAuth2 Basic Plugin für Registrierung und Login konfigurieren

(oauth2_basic) Authentifizierungsfehler! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF erkannt

Irgendeine Idee?

Ist es möglich, Auth0 als einzige Möglichkeit zur Registrierung und Anmeldung zu verwenden?

Ja, deaktivieren Sie einfach alle anderen Anmeldemethoden (einschließlich der Einstellung „Lokale Anmeldungen aktivieren“).

1 „Gefällt mir“

Ist es möglich, einfach zur Auth0-Anmeldung weiterzuleiten, ohne das grundlegende Anmeldeformular anzuzeigen?

Wenn Sie die Discourse-Anmeldungs- und Registrierungs-Oberfläche vollständig ausblenden möchten, können Sie die Site-Einstellung „Lokale Anmeldungen aktivieren" deaktivieren.

1 „Gefällt mir“

Danke, David. Das habe ich bereits versucht, aber ich habe festgestellt, dass beim Anmelden über das Modal und der anschließenden Weiterleitung zurück zu Discourse erneut nach einem Benutzernamen und weiteren Details gefragt wird. Es scheint also, als würde Auth0 diese Informationen nicht an Discourse übergeben. Ich frage mich, ob die Lösung darin besteht, das Modal bei der Registrierung auf Auth0 einfach zu halten (nur E-Mail-Adresse und Passwort) und die restlichen Details erst auf Discourse abzufragen.
Das Problem ist jedoch, dass wir die Benutzerdaten an einem Ort speichern möchten, und zwar in einer benutzerdefinierten Datenbank, die mit Auth0 verbunden ist.

Wie kann ich die Weiterleitung nach dem Abmelden festlegen? Ich habe nichts dazu finden können.

Um die E-Mail-Adressen-Validierung nur dann zu verlangen, wenn der Benutzer sie noch nicht in Auth0 bestätigt hat, ist der Wert für den oauth2 json email verified path email_verified.

Ich habe dies herausgefunden, indem ich die Einstellung oauth2 debug auth aktiviert und die Protokolle unter \u003cDISCOURSE_URL\u003e/logs überprüft habe. Als ich mich mit einem nicht verifizierten Konto angemeldet habe, sah der Body wie folgt aus:

OAuth2 Debugging:
user_json: {
  "sub"=>"auth0|XXXXXX",
  "nickname"=>"YYYYY+unprovenauth",
  "name"=>"YYYYYY+unprovenauth@ZZZZZZ.com",
  "picture"=>"https://via.placeholder.com/150",
  "updated_at"=>"2022-09-21T07:50:40.172Z",
  "email"=>"YYYYYY+unprovenauth@ZZZZZZ.com",
  "email_verified"=>false
}
1 „Gefällt mir“

@david

Ich hoffe, du kannst helfen – ich möchte Discourse so konfigurieren, dass es sich mit dem XBL-Login von Microsoft anmeldet, und ich dachte, dieses Plugin könnte ein guter Anfang sein.

Ich habe diesen Thread im Entwicklerbereich gepostet:

Es gibt ein Minecraft-Discourse-Forum namens „The Hive“, das das nutzt, was wir tun wollen – ich kann nur kein Plugin dafür finden. :slight_smile:

Hallo!

Gibt es eine Möglichkeit, ein Login für das Posten in der Community zu verlangen, aber die Beiträge auch ohne Login anzeigen zu können?

Wir haben das Auth0-Plugin für unsere Community aktiviert. Und wir haben alle anderen Formen von Login und anonymem Posten entfernt – wir möchten im Wesentlichen sicherstellen, dass die Leute Kunden von uns sind, bevor sie in der User Community posten. Aber wir möchten trotzdem, dass die Beiträge von anderen angezeigt werden können, auch wenn sie sich nicht angemeldet haben.

Die Art und Weise, wie ich das Auth0-Plugin zum Laufen gebracht habe, erfordert, dass man sich zuerst anmeldet, bevor man überhaupt die Inhalte sehen kann. Übersehe ich einen Schalter oder etwas Ähnliches?

Danke!

Es scheint, als hätten Sie login required aktiviert. Wenn diese Option aktiviert ist, können nur Personen mit einem Konto die Forenbeiträge einsehen. Sie sollten SSO nutzen können, ohne diese Option aktivieren zu müssen. :+1:

1 „Gefällt mir“

Diese URL wird direkt nach der Erstellung der Registrierung zurückgegeben und bevor der Endbenutzer seine E-Mail in Auth0 validieren kann. Gibt es eine Möglichkeit, zu verhindern, dass er zur Community weitergeleitet wird, bevor die E-Mail validiert wurde?

Ich habe einige Probleme bei der Einrichtung. Nachdem ich alles aktiviert und dann den Anmeldevorgang auf meinem Discourse durchlaufen habe, wird er problemlos an Auth0 gesendet, aber wenn ich zurückkomme, sehe ich eine Fehlermeldung („Hoppla! Die Software, die dieses Diskussionsforum antreibt, ist auf ein unerwartetes Problem gestoßen. Wir entschuldigen uns für die Unannehmlichkeiten.“).

Wenn ich in die Protokolle schaue, sehe ich, was ich für den Fehler halte:

ActiveRecord::NotNullViolation (PG::NotNullViolation: ERROR: null value in column "provider_uid" of relation "user_associated_accounts" violates not-null constraint

Ich habe alles gemäß den Anweisungen konfiguriert. Es scheint, dass dieses Problem durch den falschen Wert für „OAuth2 JSON User ID Path“ verursacht wird und dieses Feld leer ist? Ich habe es auf sub gesetzt.

Unter der Annahme, dass die IDP separate Felder wie user.name.first und user.name.last bereitstellt, anstelle von user.name.full, wie im Beispiel zur Feldbeschreibung angegeben…

Wäre es möglich, den Wert des OAuth2 JSON-Namenspfads aus mehreren Benutzer-JSON-Datenpfaden zu verketten?