【问题标题】:Rails CSRF token authenticity on Incoming external POST Requests传入外部 POST 请求的 Rails CSRF 令牌真实性
【发布时间】:2016-03-08 11:03:55
【问题描述】:

我的 Rails 应用程序订阅了外部系统 POST 通知(名为 Orion 上下文代理)。我管理发送 json 数据和处理响应(ruby->Orion)。

但是当收到通知请求时,我收到 InvalidAuthenticityToken 错误 无法验证 CSRF 令牌真实性警告

I, [2015-12-03T16:56:53.215991 #22189]  INFO -- : Started POST "/machine/listen" for 127.0.0.1 at 2015-12-03 16:56:53 +0000
I, [2015-12-03T16:56:53.221524 #22189]  INFO -- : Processing by MachineController#listen as XML
I, [2015-12-03T16:56:53.221762 #22189]  INFO -- :   Parameters: {"subscriptionId"=>"5660745482ef938cd5055ae3", "originator"=>"localhost", "contextResponses"=>[{"contextElement"=>{"type"=>"Printer", "isPattern"=>"false", "id"=>"UM1", "attributes"=>[{"name"=>"temperature", "type"=>"float", "value"=>"110"}]}, "statusCode"=>{"code"=>"200", "reasonPhrase"=>"OK"}}], "machine"=>{"subscriptionId"=>"5660745482ef938cd5055ae3", "originator"=>"localhost", "contextResponses"=>[{"contextElement"=>{"type"=>"Printer", "isPattern"=>"false", "id"=>"UM1", "attributes"=>[{"name"=>"temperature", "type"=>"float", "value"=>"110"}]}, "statusCode"=>{"code"=>"200", "reasonPhrase"=>"OK"}}]}}
W, [2015-12-03T16:56:53.223637 #22189]  WARN -- : Can't verify CSRF token authenticity
I, [2015-12-03T16:56:53.224191 #22189]  INFO -- : Completed 422 Unprocessable Entity in 2ms (ActiveRecord: 0.0ms)
F, [2015-12-03T16:56:53.225189 #22189] FATAL -- : 
ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):

我了解返回的消息 (Orion->ruby) 不包含正确的安全令牌。

也许我可以禁用 protect_from_forgery,但肯定会寻找一种方法来管理这些不同服务之间的身份验证。

谢谢

【问题讨论】:

  • 您在寻找类似 HTTP 基本身份验证的东西吗?

标签: ruby-on-rails ruby authentication fiware fiware-orion


【解决方案1】:

如果您知道自己在做什么,可以禁用 CSRF 保护!只要确保您没有为整个网站禁用它

在接收这些发布请求的控制器中使用skip_before_action :verify_authenticity_token 之类的东西。

【讨论】:

    猜你喜欢
    • 2016-05-12
    • 1970-01-01
    • 2016-09-17
    • 2012-07-29
    • 2021-12-10
    • 2012-03-10
    • 1970-01-01
    • 2017-07-15
    • 2015-07-24
    相关资源
    最近更新 更多