ClassLink Devise OmniAuth::策略::OAuth2::回调错误,csrf_detected



我查看了各种类似的问题和响应,但都无济于事。很抱歉,如果这是显而易见的,但OAuth不是我的专业领域。

我正在使用Ruby 2.74和Devise运行Rails 5.2。我在Facebook上设置了SSO,它运行良好。我正试图让它与ClassLink一起工作,但我被卡住了。当点击我们的ClassLink面板图标(ClassLink网站(时,它会打开我们网站的新浏览器窗口,但无法以该用户身份登录。两端都设置了具有相同电子邮件的用户。服务器错误为

15:14:51 web.1|D,[2022-09-01T15:14:51.715485#1139413]调试--omniauth:(classlink(回调阶段启动。15:14:51 web.1|E,[2022-09-01T15:14:51.720435#1139413]错误--omniauth:(classlink(身份验证失败!csrf_detected:OmniAuth::策略::OAuth2::回调错误,csrf_deected|csrf检测到

Omniauth Classlink Gem调用的devise.rb条目

config.omniauth:class_link,'您的classlink访问密钥','你的classlink秘密',strategy_class:'OmniAuth::Strategies::ClassLink'

但是使用最后一个参数(strategy_class(,服务器将不会启动并退出,并返回一个错误:

NoMethodError:"的未定义方法"new";OmniAuth::策略::ClassLink":字符串

所以我放弃了它,因为我的工作Facebook SSO不需要它。

在登录失败时,我得到以下日志条目:

用户处理::OmniauthCallbacksController#失败为HTML参数:{"code"="gt;"c166206446884317a72fa1c03772a2b622c9135c526e7a","response_type"="gt"code"}已重定向至https://dtest.pagekite.me/?locale=en过滤器链中止为:authorize rendered or redirected已完成302在8ms内找到(活动记录:0.0ms(

在ClassLink上注册的域与我们的服务器匹配,回调url是正确的。权限、路由、回调功能等对我来说都还可以(同样,与Facebook几乎相同(。关于我下一步该去哪里,有什么建议吗?

谢谢。

听起来这里有一些不同的问题。

15:14:51 web.1|D,[2022-09-01T15:14:51.715485#1139413]调试--omniauth:(classlink(回调阶段启动。15:14:51 web.1|E,[2022-09-01T15:14:51.720435#1139413]错误--omniauth:(classlink(身份验证失败!csrf_detected:OmniAuth::策略::OAuth2::回调错误,csrf_deected|csrf检测到

在请求阶段,您会收到一个具有随机值的状态参数。omniauth-oauth2策略(omniauth-classlink策略从中进行子类化(将该值存储在会话中。在回调阶段,您再次收到一个状态参数,它必须与请求阶段收到的参数相匹配。这个错误几乎总是意味着你的会话有问题

NoMethodError:"的未定义方法"new";OmniAuth::策略::ClassLink":字符串

strategy_class选项的值应该是类名常量。删除引号应该可以修复它。

用户处理:OmniauthCallbacksController#失败为HTML参数:{quot;code"=>c166206446884317a72fa1c03772a2b622c9135c526e7a;,&quothttps://dtest.pagekite.me/?locale=en过滤器链暂停为:authorize rendered or redirected Completed 302 Found in 8ms(ActiveRecord:0.0ms(

这是Devise试图在不应该授权回调请求的情况下授权回调请求。您的Users::OmniauthCallbacksController是在before操作中调用authenticate_user!,还是从父类继承该行为?

最新更新