lib/saml/kit/bindings/url_builder.rb in saml-kit-1.0.15 vs lib/saml/kit/bindings/url_builder.rb in saml-kit-1.0.16

- old
+ new

@@ -15,21 +15,20 @@ def initialize(configuration: Saml::Kit.configuration) @configuration = configuration end - def build(saml_document, relay_state: nil) - destination = saml_document.destination + def build(document, relay_state: nil) + destination = document.destination if configuration.sign? - payload = canonicalize(saml_document, relay_state) + payload = canonicalize(document, relay_state) "#{destination}?#{payload}&Signature=#{signature_for(payload)}" else - payload = to_query_string( - saml_document.query_string_parameter => serialize(saml_document.to_xml), + "#{destination}?" + to_query_string( + document.query_string_parameter => serialize(document.to_xml), 'RelayState' => relay_state ) - "#{destination}?#{payload}" end end private @@ -37,11 +36,12 @@ private_key = configuration.private_keys(use: :signing).last encode(private_key.sign(OpenSSL::Digest::SHA256.new, payload)) end def canonicalize(saml_document, relay_state) + xml = saml_document.to_xml to_query_string( - saml_document.query_string_parameter => serialize(saml_document.to_xml), + saml_document.query_string_parameter => serialize(xml), 'RelayState' => relay_state, 'SigAlg' => ::Xml::Kit::Namespaces::SHA256 ) end