Facebook Login Error: CSRF detected

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!

This error is similar both for Google and Facebook. In my configuration there was a line in nginx:

# proxy_set_header X-Forwarded-Proto $https;

After I changed it to

proxy_set_header X-Forwarded-Proto $scheme;

the error has gone.

Solution was found after reading this topic: Redirect URI mismatch in Google Auth

2 curtidas

Preciso melhorar minha resposta.

Depois de brincar com a autenticação do FB e do Google, fiquei no login do Office365 por causa da política da empresa.

Quando movi meu servidor discourse para trás de um proxy (veja a imagem abaixo), a autenticação do O365 ficou indisponível. Ele precisa que o force https esteja ativado e essa opção está quebrada atrás do proxy. Resolvido, graças a Daniel: Moved site behind proxy, favicon and header not using https anymore - #11 by rossierd.

A linha na configuração interna do Nginx

proxy_set_header X-Forwarded-Proto $scheme;

deve ser substituída por

proxy_set_header X-Forwarded-Proto "https";

O Nginx externo não precisa de tal modificação. Ele tem:

proxy_set_header X-Forwarded-Proto $scheme;

Provavelmente o mesmo vale para FB, Google e outros tipos de autenticação.

P.S.

Obviamente essa string continha um erro de digitação $ e foi inútil.

1 curtida