Social Login funktioniert nur auf Desktop, aber nicht auf mobilen Geräten (CSRF detected)

AI-generated summary

Ein Benutzer (DW_dev) meldet, dass Social Logins (Google, Discord, LinkedIn) auf Desktop-Geräten funktionieren, aber auf mobilen Geräten mit der Fehlermeldung csrf_detected fehlschlagen. Nach dem Redirect landet der Nutzer auf der Startseite, ist jedoch nicht eingeloggt. Die Logs zeigen wiederholt den CSRF-Fehler. Zunächst wird gefragt, ob es sich um eine Standard-Installation handelt (pfaffman), was bestätigt wird (DW_dev). Die Lösung findet DW_dev selbst: Ein benutzerdefiniertes JavaScript-Skript im Theme, das auf mobilen Geräten die Seite ständig neu lädt (window.location.replace), verursachte das Problem. Durch Entfernen dieses Skripts wurde der CSRF-Fehler behoben, da die Session- und CSRF-Token nun korrekt über den Redirect übertragen werden können.

Hallo,
mein Discourse-Forum hat ein Problem mit Social Logins (Google, Discord, LinkedIn):

  • Auf Desktop funktionieren alle Social Logins einwandfrei.

  • Auf allen mobilen Geräten (iOS/Android, Safari/Chrome/Firefox) schlagen sie fehl.

Der Ablauf mobil:

  1. Social Login öffnet sich normal.

  2. Nach dem Redirect zurück zu meiner Seite lande ich nur auf der Startseite, aber bin nicht eingeloggt.

In den Logs steht jedes Mal:

(google_oauth2) Authentication failure! csrf_detected

oder

(discord) Authentication failure! invalid_credentials: invalid_request

Was ich bereits geprüft habe:

  • OAuth-Setup korrekt (Desktop funktioniert)

  • Cookies/Cache auf Geräten gelöscht

  • Keine In-App-Browser, echte Browser getestet

  • Egal welcher mobile Browser → immer CSRF detected

Frage:
Was kann in Discourse dazu führen, dass Social Logins nur auf mobilen Geräten die Session/Cookies verlieren und mit csrf_detected abbrechen?

Danke für jede Hilfe! :folded_hands:


Ist dies eine Standardinstallation? Wenn nicht, haben Sie force_https aktiviert?

Hallo, ja es ist eine Standard-Discourse-Installation (Auf Hetzner Server installiert).

Ich habe die Lösung für das Problem gefunden, bei dem Social Logins (Google, Discord etc.) auf mobilen Geräten mit csrf_detected fehlschlagen, obwohl sie auf dem PC funktionieren.

Die Ursache lag in meinem Theme:

Ein benutzerdefiniertes JavaScript-Skript in der <head>-Sektion des Themes hat die Seite auf mobilen Geräten ständig neu geladen (window.location.replace).

Dieser erzwungene Redirect hat den temporären CSRF-Token zerstört, der für die Session-Validierung nach dem Callback von Google/Discord notwendig ist.

Lösung:

Ich habe das gesamte Skript zur Erzwingung der mobilen Ansicht aus dem Theme entfernt.

Wenn ihr ähnliche Probleme habt und ein Custom Theme nutzt, prüft, ob dort Skripte laufen, die Redirects auslösen. Das war bei mir der Übeltäter!