Commit 3d4909c
Changed files (3)
lib
saml
kit
bindings
spec
saml
bindings
lib/saml/kit/bindings/http_redirect.rb
@@ -17,7 +17,7 @@ module Saml
end
def deserialize(params, configuration: Saml::Kit.configuration)
- parameters = normalize(params)
+ parameters = normalize(params_to_hash(params))
document = deserialize_document_from!(parameters, configuration)
ensure_valid_signature!(parameters, document)
document
@@ -74,6 +74,11 @@ module Saml
SigAlg: params['SigAlg'] || params[:SigAlg],
}
end
+
+ def params_to_hash(value)
+ return value unless value.is_a?(String)
+ Hash[URI.parse(value).query.split('&').map { |x| x.split('=', 2) }]
+ end
end
end
end
lib/saml/kit.rb
@@ -12,6 +12,7 @@ require "logger"
require "net/http"
require "nokogiri"
require "securerandom"
+require "uri"
require "xml/kit"
require "saml/kit/buildable"
spec/saml/bindings/http_redirect_spec.rb
@@ -35,6 +35,12 @@ RSpec.describe Saml::Kit::Bindings::HttpRedirect do
expect(result).to be_instance_of(Saml::Kit::AuthenticationRequest)
end
+ it 'deserializes the raw query_string to an AuthnRequest' do
+ url, _ = subject.serialize(Saml::Kit::AuthenticationRequest.builder, relay_state: "HELLO")
+ result = subject.deserialize(url)
+ expect(result).to be_instance_of(Saml::Kit::AuthenticationRequest)
+ end
+
it 'deserializes the SAMLRequest to an AuthnRequest with symbols for keys' do
configuration = Saml::Kit::Configuration.new do |config|
config.entity_id = entity_id