Class: OneLogin::RubySaml::IdpMetadataParser
- Inherits:
-
Object
- Object
- OneLogin::RubySaml::IdpMetadataParser
- Includes:
- SamlMetadata::Vocabulary
- Defined in:
- lib/onelogin/ruby-saml/idp_metadata_parser.rb
Overview
Auxiliary class to retrieve and parse the Identity Provider Metadata
Defined Under Namespace
Modules: SamlMetadata Classes: IdpMetadata
Constant Summary
Constants included from SamlMetadata::Vocabulary
SamlMetadata::Vocabulary::DSIG, SamlMetadata::Vocabulary::METADATA, SamlMetadata::Vocabulary::NAME_FORMAT, SamlMetadata::Vocabulary::SAML_ASSERTION
Instance Attribute Summary collapse
-
#document ⇒ Object
readonly
Returns the value of attribute document.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#response ⇒ Object
readonly
Returns the value of attribute response.
Class Method Summary collapse
-
.get_idps(metadata_document, only_entity_id = nil) ⇒ Object
fetch IdP descriptors from a metadata document.
Instance Method Summary collapse
-
#parse(idp_metadata, options = {}) ⇒ OneLogin::RubySaml::Settings
Parse the Identity Provider metadata and update the settings with the IdP values.
-
#parse_remote(url, validate_cert = true, options = {}) ⇒ OneLogin::RubySaml::Settings
Parse the Identity Provider metadata and update the settings with the IdP values.
-
#parse_remote_to_array(url, validate_cert = true, options = {}) ⇒ Array<Hash>
Parse all Identity Provider metadata and return the results as Array.
-
#parse_remote_to_hash(url, validate_cert = true, options = {}) ⇒ Hash
Parse the Identity Provider metadata and return the results as Hash.
-
#parse_to_array(idp_metadata, options = {}) ⇒ Array<Hash>
Parse all Identity Provider metadata and return the results as Array.
-
#parse_to_hash(idp_metadata, options = {}) ⇒ Hash
Parse the Identity Provider metadata and return the results as Hash.
- #parse_to_idp_metadata_array(idp_metadata, options = {}) ⇒ Object
Instance Attribute Details
#document ⇒ Object (readonly)
Returns the value of attribute document.
33 34 35 |
# File 'lib/onelogin/ruby-saml/idp_metadata_parser.rb', line 33 def document @document end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
35 36 37 |
# File 'lib/onelogin/ruby-saml/idp_metadata_parser.rb', line 35 def @options end |
#response ⇒ Object (readonly)
Returns the value of attribute response.
34 35 36 |
# File 'lib/onelogin/ruby-saml/idp_metadata_parser.rb', line 34 def response @response end |
Class Method Details
.get_idps(metadata_document, only_entity_id = nil) ⇒ Object
fetch IdP descriptors from a metadata document
38 39 40 41 42 43 44 45 |
# File 'lib/onelogin/ruby-saml/idp_metadata_parser.rb', line 38 def self.get_idps(, only_entity_id=nil) path = "//md:EntityDescriptor#{only_entity_id && '[@entityID="' + only_entity_id + '"]'}/md:IDPSSODescriptor" REXML::XPath.match( , path, SamlMetadata::NAMESPACE ) end |
Instance Method Details
#parse(idp_metadata, options = {}) ⇒ OneLogin::RubySaml::Settings
Parse the Identity Provider metadata and update the settings with the IdP values
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/onelogin/ruby-saml/idp_metadata_parser.rb', line 113 def parse(, = {}) = parse_to_hash(, ) unless [:cache_duration].nil? = OneLogin::RubySaml::Utils.parse_duration([:cache_duration]) if [:valid_until].nil? || < Time.parse([:valid_until], Time.now.utc).to_i [:valid_until] = Time.at().utc.strftime("%Y-%m-%dT%H:%M:%SZ") end end # Remove the cache_duration because on the settings # we only gonna suppot valid_until .delete(:cache_duration) settings = [:settings] if settings.nil? OneLogin::RubySaml::Settings.new() elsif settings.is_a?(Hash) OneLogin::RubySaml::Settings.new(settings.merge()) else (settings, ) end end |
#parse_remote(url, validate_cert = true, options = {}) ⇒ OneLogin::RubySaml::Settings
Parse the Identity Provider metadata and update the settings with the IdP values
62 63 64 65 |
# File 'lib/onelogin/ruby-saml/idp_metadata_parser.rb', line 62 def parse_remote(url, validate_cert = true, = {}) = (url, validate_cert) parse(, ) end |
#parse_remote_to_array(url, validate_cert = true, options = {}) ⇒ Array<Hash>
Parse all Identity Provider metadata and return the results as Array
97 98 99 100 |
# File 'lib/onelogin/ruby-saml/idp_metadata_parser.rb', line 97 def parse_remote_to_array(url, validate_cert = true, = {}) = (url, validate_cert) parse_to_array(, ) end |
#parse_remote_to_hash(url, validate_cert = true, options = {}) ⇒ Hash
Parse the Identity Provider metadata and return the results as Hash
80 81 82 |
# File 'lib/onelogin/ruby-saml/idp_metadata_parser.rb', line 80 def parse_remote_to_hash(url, validate_cert = true, = {}) parse_remote_to_array(url, validate_cert, )[0] end |
#parse_to_array(idp_metadata, options = {}) ⇒ Array<Hash>
Parse all Identity Provider metadata and return the results as Array
161 162 163 |
# File 'lib/onelogin/ruby-saml/idp_metadata_parser.rb', line 161 def parse_to_array(, = {}) (, ).map{|idp_md| idp_md.to_hash()} end |
#parse_to_hash(idp_metadata, options = {}) ⇒ Hash
Parse the Identity Provider metadata and return the results as Hash
147 148 149 |
# File 'lib/onelogin/ruby-saml/idp_metadata_parser.rb', line 147 def parse_to_hash(, = {}) parse_to_array(, )[0] end |
#parse_to_idp_metadata_array(idp_metadata, options = {}) ⇒ Object
165 166 167 168 169 170 171 172 173 174 175 |
# File 'lib/onelogin/ruby-saml/idp_metadata_parser.rb', line 165 def (, = {}) @document = REXML::Document.new() @options = idpsso_descriptors = self.class.get_idps(@document, [:entity_id]) if !idpsso_descriptors.any? raise ArgumentError.new("idp_metadata must contain an IDPSSODescriptor element") end return idpsso_descriptors.map{|id| IdpMetadata.new(id, id.parent.attributes["entityID"])} end |