joshm
(Josh)
2019 年 3 月 26 日午後 12:43
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!
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
回答を改善する必要があります。
FBとGoogle認証を試した後、会社のポリシーによりOffice365ログインに落ち着きました。
ディスコースサーバーをプロキシの後ろに移動したところ(下の画像を参照)、O365認証が利用できなくなりました。force httpsを有効にする必要がありましたが、プロキシの後ろではこのオプションが機能しませんでした。幸い、Danielによって解決されました: https://meta.discourse.org/t/moved-site-behind-proxy-favicon-and-header-not-using-https-anymore/131486/11。
内部Nginx設定の行
proxy_set_header X-Forwarded-Proto $scheme;
は以下に置き換える必要があります
proxy_set_header X-Forwarded-Proto "https";
外部Nginxはこの種の変更は必要ありません。以下の設定になっています:
proxy_set_header X-Forwarded-Proto $scheme;
おそらく、FB、Google、その他の種類の認証でも同様でしょう。
追伸
明らかにその文字列にはタイプミス$が含まれており、無意味でした。
「いいね!」 1