2015-12-03 2 views
2

Приложение rails подписывается на уведомления POST внешней системы (называемые контекстным брокером Orion). Я управляю отправкой json-данных & отклика процесса (ruby-> Orion).Релейная аутентификация аутентификации CSRF при входящих внешних POST-запросах

Но когда приходит запрос на уведомление, я получаю сообщение об ошибке 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-> рубин) не содержит надлежащего токен безопасности.

Может быть, я мог бы отключить protect_from_forgery, но определенно ищу один способ управления аутентификацией между этими различными службами.

Благодаря

+0

Вы ищете нечто вроде HTTP Basic Authentication? – andrykonchin

ответ

2

Это нормально, чтобы отключить защиту CSRF, если вы знаете, что вы делаете! Просто убедитесь, что вы не отключите его для всего своего сайта.

Используйте что-то наподобие skip_before_action :verify_authenticity_token в контроллере, который получает эти почтовые запросы.

Смежные вопросы