示例 saml 应用程序中的 nil:NilClass 的未定义方法 '+'



尝试在此处遵循设置以创建一个简单的SAML应用程序(我在这里得到的完整项目(。

我经过了设置

bundle install
rails s

这很好,但是当我导航到http://localhost:3000/我被

击中
NoMethodError in SamlController#init
undefined method `+' for nil:NilClass
Extracted source (around line #9):
  def init
    request = OneLogin::RubySaml::Authrequest.new
    direct_to(request.create(saml_settings))
  end
  def consume

我添加了一些日志记录以检查请求和saml_settings的零状态,但这似乎返回了两个

puts request.nil?
puts saml_settings.nil?

错误跟踪:

Processing by SamlController#init as HTML
false
false
Created AuthnRequest: <samlp:AuthnRequest AssertionConsumerServiceURL='http://localhost:3000/saml/consume' ID='_394fa0a0-f313-0135-85a4-6a0001e18280' IssueInstant='2018-02-13T17:42:45Z' Version='2.0' xmlns:saml='urn:oasis:names:tc:SAML:2.0:assertion' xmlns:samlp='urn:oasis:names:tc:SAML:2.0:protocol'><saml:Issuer>http://localhost:3000/saml/consume</saml:Issuer></samlp:AuthnRequest>
Completed 500 Internal Server Error in 15ms (ActiveRecord: 0.0ms)
NoMethodError (undefined method `+' for nil:NilClass):
  app/controllers/saml_controller.rb:9:in `init'

(注意:错误是第5行,它为我说了第9行,因为我添加了调试记录(我不太确定它还有什么,不确定它找不到哪种方法,什么是nil?

我从来没有弄乱红宝石的东西,但是从我的初始外观开始,我不确定零零来自哪里,日志显示了要创建的请求,因此不确定。任何帮助将不胜感激,谢谢!

首先,我认为您正在使用一个非常旧的Ruby-Saml Gem版本。这可能是问题。

我尚未测试您的代码,但在我看来,您忘记了在设置中设置idp_sso_target_url,这显然是唯一可以抛出您获得的例外的地方。https://github.com/onelogin/ruby-saml/blob/v1.1.2/lib/onelogin/ruby-saml/authrequest.rb#l39

在此处发布答案,事实证明我正在为Okta_metadata环境变量使用元数据URL。

必须修改设置= idp_metadata_parser.parse(env ['okta_metadata'](到设置= idp_metadata_parser.parse_remote(env ['okta_metadata'](在哪里okta_metadata = http://blahblahblah.com/metadata

最新更新