Facebook-Login-Fehler: CSRF erkannt

Hi!

My users cannot log in with Facebook anymore. This is the error log:

(facebook) Authentication failure! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detected

I’m using Cloudflare in front of nginx. I’m using Cloudflare automatic SSL (flexible). I didn’t install any certificate on my server (i.e. I’m not using Letsencrypt).

Is this related to Cloudflare? Can this be solved without installing Letsencrypt?

Thanks!

Dieser Fehler tritt sowohl bei Google als auch bei Facebook ähnlich auf. In meiner Konfiguration befand sich folgende Zeile in nginx:

# proxy_set_header X-Forwarded-Proto $https;

Nachdem ich sie in

proxy_set_header X-Forwarded-Proto $scheme;

geändert habe, ist der Fehler verschwunden.

Die Lösung wurde nach dem Lesen dieses Themas gefunden: Redirect URI mismatch in Google Auth

Ich muss meine Antwort verbessern.

Nachdem ich mit der FB- und Google-Authentifizierung herumgespielt habe, bleibe ich aufgrund der Unternehmensrichtlinien bei der Office365-Anmeldung.

Als ich meinen Discourse-Server hinter einen Proxy (siehe Bild unten) verschoben habe, wurde die O365-Authentifizierung unmöglich. Sie benötigt force https, was hinter dem Proxy nicht funktioniert. Glücklicherweise von Daniel gelöst: Moved site behind proxy, favicon and header not using https anymore - #11 by rossierd.

Die Zeile in der internen Nginx-Konfiguration

proxy_set_header X-Forwarded-Proto $scheme;

sollte ersetzt werden durch

proxy_set_header X-Forwarded-Proto "https";

Externes Nginx benötigt keine solche Änderung. Es hat:

proxy_set_header X-Forwarded-Proto $scheme;

Wahrscheinlich gilt dasselbe für FB-, Google- und andere Arten der Authentifizierung.

P.S.

Offensichtlich enthielt diese Zeichenkette einen Tippfehler $, und war nutzlos.