joshm
(Josh)
Março 26, 2019, 12:43pm
1
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!
Esse erro é semelhante tanto para o Google quanto para o Facebook. Na minha configuração, havia uma linha no nginx:
# proxy_set_header X-Forwarded-Proto $https;
Após alterá-la para
proxy_set_header X-Forwarded-Proto $scheme;
o erro desapareceu.
A solução foi encontrada após ler este tópico: Redirect URI mismatch in Google Auth
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.