2017-07-20 7 views
0

私は次のように(Googleのアサーションコンシューマサービス付き)SAML2 SSOログインを作成しました:私はACSと同等のログアウトを取得できませんよ、ルビーSAML ACSログアウト要求

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 

をしかし。

私が試した:

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

をしかし、これは私がスローされます。

NoMethodError - 未定義のメソッド `+ 'nilのために:NilClass

私はログアウト方法感じる' を試行錯誤している。ログアウトリクエストを送信する正しい方法は何ですか?

答えて

1

ruby-saml-exampleプロジェクトのコードを確認してください。

logoutメソッドは、SPおよびIdP初期化SLOフローを処理します。

あなたが記述しているユースケースでは、設定でidp_slo_target_url属性を定義していないという問題があると思います。 ruby​​-saml-exampleでは、その問題はlineで制御されています。

詳細については、ruby-samlのREADME、single-log-outを参照してください。

関連する問題