main
1# frozen_string_literal: true
2
3module Saml
4 module Kit
5 # This class represents a
6 # SPSSODescriptor element in a
7 # SAML metadata document.
8 # {include:file:spec/examples/service_provider_metadata_spec.rb}
9 class ServiceProviderMetadata < Metadata
10 def initialize(xml)
11 super('SPSSODescriptor', xml)
12 end
13
14 # Returns each of the AssertionConsumerService bindings.
15 def assertion_consumer_services
16 services('AssertionConsumerService')
17 end
18
19 # Returns the AssertionConsumerService for the specified binding.
20 #
21 # @param binding [Symbol] can be either `:http_post` or `:http_redirect`
22 def assertion_consumer_service_for(binding:)
23 service_for(binding: binding, type: 'AssertionConsumerService')
24 end
25
26 # Returns true when the metadata demands that Assertions must be signed.
27 def want_assertions_signed
28 element = at_xpath("/md:EntityDescriptor/md:#{name}")
29 attribute = element.attribute('WantAssertionsSigned')
30 return true if attribute.nil?
31
32 attribute.text.casecmp('true').zero?
33 end
34
35 # @!visibility private
36 def self.builder_class
37 Saml::Kit::Builders::ServiceProviderMetadata
38 end
39 end
40 end
41end