Sie klicken auf Hilfe im Community-Forum erhalten und werden zu Auth0 weitergeleitet, um sich anzumelden
Nach der Anmeldung werden sie zu discourse.getdbt.com weitergeleitet, aber mit der CSRF-Warnung.
Wenn sie auf Anmelden und dann auf Ihr dbt Community-Konto verwenden klicken, wird das Konto erfolgreich erstellt und sie sehen den Dialog zur Kontoerstellung, in dem sie ihren Benutzernamen usw. festlegen können.
Loom-Video, das dies in Aktion zeigt:
Ich habe oauth2 debug auth aktiviert und in den Protokollen sehe ich (oauth2_basic) Authentication failure! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detected.
Meine Fragen:
Ist dies ein Discourse-Problem oder ein Auth0-Problem? Ich gehe davon aus, dass es sich um ein Discourse-Problem handelt, da ein praktisch identischer Anmeldeflow für Slack ohne Probleme funktioniert.
Warum funktioniert dies auf der Anmeldeseite, aber nicht, wenn die Anmeldung von der Auth0-Seite ausgelöst wird?
Die Standard-CSRF-Fehlermeldung impliziert, dass sie auftritt, wenn sich der Browser ändert oder der Anmeldeflow zu lange dauert. Beides trifft nicht zu, was könnte es noch verursachen?
Sollte ich https://discourse.getdbt.com/auth/oauth2_basic in das Feld „Application Login URI“ eintragen und https://discourse.getdbt.com/auth/oauth2_basic/callback im Feld „Allowed Callback URLs“ belassen?
Können Sie mehr Details dazu teilen, wie der Link „Hilfe im Community-Forum erhalten“ implementiert ist? Wohin führt der Link? Ich gehe derzeit davon aus, dass die Schaltfläche von Auth0 gehandhabt wird und dass das Hinzufügen dieser neuen URL-Konfiguration dazu führt, dass die Schaltfläche korrekt auf /auth/oauth2_basic verknüpft wird, um den Anmeldevorgang zu starten.
Entschuldigen Sie die langsame Antwort – ich bin gerade nach den Weihnachtsferien zurück!
Ich habe das hier gemacht:
aber erhalte immer noch das gleiche Ergebnis.
Dieser Link verweist auf https://dev-zb38hsho.us.auth0.com/samlp/5GpVvVgryMnBaNJFuLt5DW3bs89jO0hr, wobei dev-zb38hsho unsere Auth0-Instanz-ID und 5GpVvVgryMnBaNJFuLt5DW3bs89jO0hr die Client-ID für die Discourse-Anwendung in Auth0 ist.
Wenn Sie diesen Link besuchen, werden Sie zu https://dev-zb38hsho.us.auth0.com/u/login?state=SESSION_SPECIFIC_TOKEN weitergeleitet.
Der Schlüssel ist, dass Discourse den Authentifizierungsfluss unter /auth/oauth2_basic starten muss, dann zu Auth0 weiterleitet und dann zurück zu /auth/oauth2_basic/callback kommt.
Ich hatte gehofft, wir könnten Auth0 dazu bringen, den Login auszulösen, indem wir mit der ersten URL beginnen, aber es scheint, als würde es Discourse direkt zur Callback-URL springen.
Könnten Sie den Button so aktualisieren, dass er auf /auth/oauth2_basic im Forum zeigt? Das startet den Authentifizierungsfluss und leitet sofort zu Auth0 weiter, sodass die allgemeine Benutzererfahrung gleich bleibt.
Ja, das funktioniert! Es wird auf einer Zwischenseite mit einer Schaltfläche “Weiter” angehalten. Ist eine Benutzerinteraktion erforderlich, um einen OAuth-Flow sicher auszulösen oder so etwas?
Diese Seite wird angezeigt, wenn es mehrere Anmeldemethoden auf einer Website gibt. Wenn Sie ‘lokale Anmeldungen’ (Benutzername/Passwort) deaktivieren, sollte dies direkt zum Anmeldevorgang führen.