CSRF使用OmniAuth-facebook,warden_ominiauth,warden在cygwin中运行检测到

时间:2015-04-16 03:45:02

标签: facebook csrf warden omniauth-facebook

我最近一直在面对这个问题。我在浏览器中收到此错误。

enter image description here

在我的cygwin中,它会重定向我并最终显示

ERROR -- omniauth: (facebook) Authentication failure! csrf_detected:                       
OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detected
E, [2015-04-16T11:21:15.660929 #10056] ERROR -- omniauth: (facebook) 
Authentication failure! invalid_credentials:  
OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detecte

我尝试了各种方法,但未能解决我的问题。

经过一些测试,我认为是我的配置问题,但仍然不知道如何修复它。似乎WardenOmniAuth无法接收来自facebook的回调,该回调一直保持循环和重定向,直到垃圾邮件将其杀死为止。

这是我的app.rb中的编码

failure = lambda{|e| Rack::Resposne.new("Can't login", 401).finish }

use Rack::Session::Cookie

use Warden::Manager do |config|
  config.failure_app = failure
  config.default_strategies :omni_facebook
end

use OmniAuth::Strategies::Facebook, ENV["APP_ID"], ENV["APP_SECRET"]

use WardenOmniAuth do |config|
  config.redirect_after_callback = "/home"
end

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。似乎Warden_OmniAuth宝石有bug。当到达回调点并导致重复循环调用回调时,它会变得混乱。

所以我改为使用Warden gem,OmniAuth gem和OmniAuth-facebook gem。通过使用建设者和监狱长策略。