Sha256: 98276c51d9628b97c314a938c24b5e04e6499092e56b93af3b5919063324f75c

Contents?: true

Size: 1.05 KB

Versions: 45

Compression:

Stored size: 1.05 KB

Contents

module Saml
  module ProviderStores
    class File
      attr_accessor :providers

      def initialize(metadata_dir = "config/metadata", key_file = "config/ssl/key.pem")
        @mutex         = Mutex.new
        self.providers = {}

        load_files(metadata_dir, key_file)
      end

      def find_by_entity_id(entity_id)
        self.providers[entity_id]
      end

      def load_files(metadata_dir, key_file)
        Dir[::File.join(metadata_dir, "*.xml")].each do |file|
          add_metadata(::File.read(file), OpenSSL::PKey::RSA.new(::File.read(key_file)))
        end
      end

      def add_metadata(metadata_xml, private_key = nil)
        entity_descriptor = Saml::Elements::EntityDescriptor.parse(metadata_xml, single: true)
        type              = entity_descriptor.sp_sso_descriptor.present? ? "service_provider" : "identity_provider"
        provider          = BasicProvider.new(entity_descriptor, private_key, type)

        @mutex.synchronize do
          self.providers[provider.entity_id] = provider
        end
      end
    end
  end
end

Version data entries

45 entries across 45 versions & 1 rubygems

Version Path
libsaml-2.15.8 lib/saml/provider_stores/file.rb
libsaml-2.15.7 lib/saml/provider_stores/file.rb
libsaml-2.15.6 lib/saml/provider_stores/file.rb
libsaml-2.15.5 lib/saml/provider_stores/file.rb
libsaml-2.15.4 lib/saml/provider_stores/file.rb
libsaml-2.15.3 lib/saml/provider_stores/file.rb
libsaml-2.15.2 lib/saml/provider_stores/file.rb
libsaml-2.15.1 lib/saml/provider_stores/file.rb
libsaml-2.14.0 lib/saml/provider_stores/file.rb
libsaml-2.13.1 lib/saml/provider_stores/file.rb
libsaml-2.12.1 lib/saml/provider_stores/file.rb
libsaml-2.12.0 lib/saml/provider_stores/file.rb
libsaml-2.11.2 lib/saml/provider_stores/file.rb
libsaml-2.11.1 lib/saml/provider_stores/file.rb
libsaml-2.11.0 lib/saml/provider_stores/file.rb
libsaml-2.10.7 lib/saml/provider_stores/file.rb
libsaml-2.10.6 lib/saml/provider_stores/file.rb
libsaml-2.10.5 lib/saml/provider_stores/file.rb
libsaml-2.10.4 lib/saml/provider_stores/file.rb
libsaml-2.10.3 lib/saml/provider_stores/file.rb