【问题标题】:Ruby SAML ACS Logout RequestRuby SAML ACS 注销请求
【发布时间】:2017-07-20 16:01:13
【问题描述】:

我创建了一个 SAML2 SSO 登录(使用 google 断言消费者服务),如下所示:

require 'onelogin/ruby-saml'

class Saml
  class << self
    def init(provider, saml2_idp_url, saml2_issuer_url)
      request = OneLogin::RubySaml::Authrequest.new

      request.create(saml_settings)
    end

    def consume(params)
      OneLogin::RubySaml::Response.new(params[:SAMLResponse], :settings => saml_settings)
    end

    private

    def saml_settings
      idp_metadata_parser = OneLogin::RubySaml::IdpMetadataParser.new

      settings = idp_metadata_parser.parse( File.read("acs.xml") )

      settings.assertion_consumer_service_url = https://certedrive-dev1.ngrok.io/saml2/idp?idpid=xxxxxx
      settings.issuer                         = https://certedrive-dev1.ngrok.io/saml2?idpid=xxxxxx
      settings
    end
  end
end

但是,我无法使用 ACS 进行等效的注销。

我试过了:

logout_req = OneLogin::RubySaml::Logoutrequest.new
logout_req_url = logout_req.create(saml_settings)

但是,这让我很震惊:

NoMethodError - nil:NilClass 的未定义方法 `+'

我觉得我正在尝试的注销方法是错误的。发出注销请求的正确方法可能是什么?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-saml


    【解决方案1】:

    检查ruby-saml-example项目的代码。

    logout 方法处理 SP 和 IdP 发起的 SLO 流。

    在您描述的用例中,我认为问题在于您没有在设置中定义idp_slo_target_url 属性。 在 ruby​​-saml-example 中,该问题由 line 控制。

    有关更多信息,请阅读 ruby​​-saml 的 README,single-log-out 部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-24
      • 1970-01-01
      • 2022-09-30
      • 2020-04-23
      • 1970-01-01
      • 1970-01-01
      • 2016-02-04
      相关资源
      最近更新 更多