Commit 02fb8bc

mo <mo.khan@gmail.com>
2017-12-17 18:28:11
lookup params using indifferent access.
1 parent 950c3ed
Changed files (3)
lib/saml/kit/bindings/binding.rb
@@ -48,10 +48,11 @@ module Saml
         protected
 
         def saml_param_from(params)
-          if params['SAMLRequest'].present?
-            params['SAMLRequest']
-          elsif params['SAMLResponse'].present?
-            params['SAMLResponse']
+          parameters = params.with_indifferent_access
+          if parameters[:SAMLRequest].present?
+            parameters[:SAMLRequest]
+          elsif parameters[:SAMLResponse].present?
+            parameters[:SAMLResponse]
           else
             raise ArgumentError.new("SAMLRequest or SAMLResponse parameter is required.")
           end
lib/saml/kit/identity_provider_metadata.rb
@@ -29,8 +29,8 @@ module Saml
         end
       end
 
-      def login_request_for(binding:, relay_state: nil)
-        builder = Saml::Kit::AuthenticationRequest.builder do |x|
+      def login_request_for(binding:, relay_state: nil, configuration: Saml::Kit.configuration)
+        builder = Saml::Kit::AuthenticationRequest.builder(configuration: configuration) do |x|
           x.embed_signature = want_authn_requests_signed
           yield x if block_given?
         end
spec/saml/bindings/http_redirect_spec.rb
@@ -37,6 +37,12 @@ RSpec.describe Saml::Kit::Bindings::HttpRedirect do
       expect(result).to be_instance_of(Saml::Kit::AuthenticationRequest)
     end
 
+    it 'deserializes the SAMLRequest to an AuthnRequest with symbols for keys' do
+      url, _ = subject.serialize(Saml::Kit::AuthenticationRequest.builder_class.new)
+      result = subject.deserialize(query_params_from(url).symbolize_keys)
+      expect(result).to be_instance_of(Saml::Kit::AuthenticationRequest)
+    end
+
     it 'deserializes the SAMLRequest to a LogoutRequest' do
       user = double(:user, name_id_for: SecureRandom.uuid)
       url, _ = subject.serialize(Saml::Kit::LogoutRequest.builder_class.new(user))