Ich habe Probleme mit der Google-Authentifizierung. Ich habe ein Google Cloud-Projekt, und nachdem ich auf die neue Domain umgestellt habe, habe ich dort auch die Redirect-URL unter Client ID geändert. Aktuell ist sie auf
Nun zum Problem: Beim Versuch, sich mit Google anzumelden, erhalte ich in Discourse diese Fehlermeldung:
https://forum.sugarmail.app/auth/failure?message=csrf_detected Die Autorisierung ist abgelaufen, oder Sie haben den Browser gewechselt. Bitte versuchen Sie es erneut.
Als das Forum noch unter der alten Domain forum.skymail.app lief, funktionierte die Google-Authentifizierung problemlos.
Ich habe nach der Änderung der Domain ./launcher rebuild app ausgeführt und dabei sichergestellt, dass die Domain in app.yaml unter DISCOURSE_HOSTNAME aktualisiert wurde (tatsächlich ließ sich das Forum gar nicht laden, bis ich das getan hatte).
Normalerweise wird beim Start des Login-Prozesses der Cookie _forum_session in Ihrem Browser gesetzt. Auf Ihrer Seite scheint dies jedoch nicht zu erfolgen.
Haben Sie Plugins oder Proxies, die die Cookies auf Ihrer Seite beeinträchtigen könnten?
Plugins – nein, ich verwende keine. Das Einzige, was ich nach der Installation getan habe, war die Aktivierung von Google Auth (Client-ID und Geheimnis) sowie die Aktivierung von “Immer HTTPS verwenden”.
Proxies – Ich verwende nginx als Reverse-Proxy (der auch die Haupt-App-Site bedient).
Let’s Encrypt ist in den Discourse-Einstellungen nicht aktiviert. Der nginx innerhalb des Containers bedient also reines HTTP, während der externe nginx die SSL-Terminierung übernimmt.
Das ist fast dieselbe Konfiguration wie bei der alten Domain, der einzige Unterschied ist “HTTPS erzwingen”.
Ach du Schreck, es heißt “HTTPS erzwingen”, was ich zuvor deaktiviert hatte.
Ich habe es kürzlich aktiviert, um die Warnung in Chrome bezüglich “unsicherer Seiteninhalte” zu vermeiden, die aufgrund von reinen HTTP-Links zu Bildern auftrat.
Zur Wiederholung: Ich führe die SSL-Terminierung im “externen” Nginx durch, und was Discourse selbst betrifft, gibt es kein SSL.
Das Deaktivieren von “HTTPS erzwingen” lässt die Google-Authentifizierung wieder funktionieren (ich musste eine einfache HTTP-Weiterleitungs-URL im Google Cloud-Projekt hinzufügen).
Das ist jedoch nicht ideal, da es zu Warnungen bezüglich “unsicherer Seite” bzw. gemischter Inhalte kommt, sobald Bilder vorhanden sind.
Gibt es eine Möglichkeit, die Google-Authentifizierung mit aktivierter Option “HTTPS erzwingen” und einer SSL-Terminierung außerhalb von Discourse funktionsfähig zu halten?
(Ich würde die eigene SSL-Unterstützung von Discourse nutzen, aber diese geht davon aus, dass sie die Domain “besitzt”, sodass ich eine zusätzliche IP-Adresse für diesen VPS einrichten und die Hauptseite vom Forum trennen müsste … was etwas aufwendig ist … )
Ah, egal. Ich habe gerade ein neues, benutzerdefiniertes Favicon festgelegt, und es wird nun über HTTPS abgerufen. Keine “mixed content”-Warnungen mehr.