Class: SamlIdp::MetadataBuilder

Inherits:
Object
  • Object
show all
Includes:
Algorithmable, Signable
Defined in:
lib/saml_idp/metadata_builder.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Signable

included, #sign, #signed

Constructor Details

#initialize(configurator = SamlIdp.config) ⇒ MetadataBuilder

Returns a new instance of MetadataBuilder.



11
12
13
# File 'lib/saml_idp/metadata_builder.rb', line 11

def initialize(configurator = SamlIdp.config)
  self.configurator = configurator
end

Instance Attribute Details

#configuratorObject

Returns the value of attribute configurator.



9
10
11
# File 'lib/saml_idp/metadata_builder.rb', line 9

def configurator
  @configurator
end

Instance Method Details

#freshObject Also known as: raw



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/saml_idp/metadata_builder.rb', line 15

def fresh
  builder = Builder::XmlMarkup.new
  generated_reference_id do
    builder.EntityDescriptor ID: reference_string,
      xmlns: Saml::XML::Namespaces::METADATA,
      "xmlns:saml" => Saml::XML::Namespaces::ASSERTION,
      "xmlns:ds" => Saml::XML::Namespaces::SIGNATURE,
      entityID: entity_id do |entity|
        sign entity

        entity.IDPSSODescriptor protocolSupportEnumeration: protocol_enumeration do |descriptor|
          build_key_descriptor descriptor
          build_endpoint descriptor, [
            { tag: 'SingleLogoutService', url: single_logout_service_post_location, bind: 'HTTP-POST' }, 
            { tag: 'SingleLogoutService', url: single_logout_service_redirect_location, bind: 'HTTP-Redirect'}
          ]
          build_name_id_formats descriptor
          build_endpoint descriptor, [
            { tag: 'SingleSignOnService', url: single_service_post_location, bind: 'HTTP-POST' }, 
            { tag: 'SingleSignOnService', url: single_service_redirect_location, bind: 'HTTP-Redirect'}
          ]
          build_attribute descriptor
        end

        entity.AttributeAuthorityDescriptor protocolSupportEnumeration: protocol_enumeration do |authority_descriptor|
          build_key_descriptor authority_descriptor
          build_organization authority_descriptor
          build_contact authority_descriptor
          build_endpoint authority_descriptor, [
            { tag: 'AttributeService', url: attribute_service_location, bind: 'HTTP-Redirect' }
          ]
          build_name_id_formats authority_descriptor
          build_attribute authority_descriptor
        end

        build_organization entity
        build_contact entity
      end
  end
end

#x509_certificateObject



154
155
156
157
158
159
160
161
# File 'lib/saml_idp/metadata_builder.rb', line 154

def x509_certificate
  certificate = SamlIdp.config.x509_certificate.is_a?(Proc) ? SamlIdp.config.x509_certificate.call : SamlIdp.config.x509_certificate
  certificate
  .to_s
  .gsub(/-----BEGIN CERTIFICATE-----/,"")
  .gsub(/-----END CERTIFICATE-----/,"")
  .gsub(/\n/, "")
end