Commit 02fb8bc
Changed files (3)
lib
saml
kit
bindings
spec
saml
bindings
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))