Errore di accesso a Facebook: rilevato CSRF

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!

Questo errore è simile sia per Google che per Facebook. Nella mia configurazione c’era una riga in nginx:

# proxy_set_header X-Forwarded-Proto $https;

Dopo averla modificata in

proxy_set_header X-Forwarded-Proto $scheme;

l’errore è scomparso.

La soluzione è stata trovata leggendo questo argomento: Redirect URI mismatch in Google Auth

Devo migliorare la mia risposta.

Dopo aver giocato con l’autenticazione FB e Google, sono rimasto su Office365 login a causa della policy aziendale.

Quando ho spostato il mio server discourse dietro un proxy (vedi l’immagine sotto), l’autenticazione O365 è diventata non disponibile. Richiede force https abilitato e questa opzione è rotta dietro il proxy. Fortunatamente risolto da Daniel: Moved site behind proxy, favicon and header not using https anymore - #11 by rossierd.

La riga nella configurazione Nginx interna

proxy_set_header X-Forwarded-Proto $scheme;

dovrebbe essere sostituita con

proxy_set_header X-Forwarded-Proto "https";

Nginx esterno non necessita di tale modifica. Ha:

proxy_set_header X-Forwarded-Proto $scheme;

Probabilmente lo stesso vale per FB, Google e altri tipi di autenticazione.

P.S.

Ovviamente quella stringa conteneva un errore di battitura $ ed era inutile.