Маршруты в Rails SAML IdP

#ruby-on-rails-4 #saml-2.0

#ruby-on-rails-4 #saml-2.0

Вопрос:

Я пытаюсь заставить этот драгоценный камень работать с приложением Rails 4, которое будет служить поставщиком идентификационных данных SAML.

Меня смущают маршруты и шаблон, которые, как я полагаю, должны быть отображены. В контроллере gem есть это:

 def new
  render template: "saml_idp/idp/new"
end
  

Мои маршруты — это всего лишь базовая настройка из примера, которая, как я полагаю, должна соответствовать действию в моем пользовательском контроллере, который наследуется от контроллера gem.

У меня есть это в моем контроллере.

 class SamlIdpController < SamlIdp::IdpController

  def idp_authenticate(email, password)
    true
  end

  def idp_make_saml_response(user)
    encode_SAMLResponse("you@example.com")
  end
end
  

И мой файл routes.rb:

 get '/saml/auth' => 'saml_idp#new'
get '/saml/metadata' => 'saml_idp#show'
  

Итак, чего мне здесь не хватает? Должно быть отображено представление, вместо этого я не получаю ошибок соответствия маршрута. Спасибо.

Ответ №1:

Согласно документу, я думаю, вы пропустили включение SamlIdp::IdpController модуля

пожалуйста, включайте SamlIdp::IdpController , а не исключайте.

Надеюсь, это сработает.

Комментарии:

1. Да, попробовал это (как в документе) и получил это в строке включения: TypeError в SamlIdpController#новый неправильный класс типа аргумента (ожидаемый модуль)

2. вы удалили расширенный класс?

3. ДА. Точно так же, как в примере с документом.

4. и, пожалуйста, попробуйте расширить контроллер с помощью ApplicationController

5. Это werid. Получилось так, что он работает с самой настройкой в моем оригинальном сообщении. Теперь можно получить доступ к маршрутам, но получить это сейчас в / saml / auth: Started GET "/saml/auth" for 127.0.0.1 at 2016-10-20 12:55:46 0200 Processing by SamlIdpController#new as HTML One and only one of authnrequest and logout request is required. authnrequest: false logout_request: false Rendered text template (0.1ms) Filter chain halted as :validate_saml_request rendered or redirected Completed 403 Forbidden in 23ms (Views: 4.0ms | ActiveRecord: 0.0ms)

Ответ №2:

Новое обновление для saml_idp gem хочет быть включено SamlIdp::Controller в качестве модуля. И класс контроллера может наследовать от ApplicationController

В вашем случае это будет:

 class SamlIdpController < ApplicationController
  include SamlIdp::Controller
end