@@ -27,7 +27,7 @@ class IdpMetadataParser
27
27
# IdP values
28
28
#
29
29
# @param (see IdpMetadataParser#get_idp_metadata)
30
- # @param options [Hash] :settings to provide the OneLogin::RubySaml::Settings object
30
+ # @param options [Hash] :settings to provide the OneLogin::RubySaml::Settings object or an hash for Settings overrides
31
31
# @return (see IdpMetadataParser#get_idp_metadata)
32
32
# @raise (see IdpMetadataParser#get_idp_metadata)
33
33
def parse_remote ( url , validate_cert = true , options = { } )
@@ -37,12 +37,17 @@ def parse_remote(url, validate_cert = true, options = {})
37
37
38
38
# Parse the Identity Provider metadata and update the settings with the IdP values
39
39
# @param idp_metadata [String]
40
- # @param options [Hash] :settings to provide the OneLogin::RubySaml::Settings object
40
+ # @param options [Hash] :settings to provide the OneLogin::RubySaml::Settings object or an hash for Settings overrides
41
41
#
42
42
def parse ( idp_metadata , options = { } )
43
43
@document = REXML ::Document . new ( idp_metadata )
44
44
45
- ( options [ :settings ] || OneLogin ::RubySaml ::Settings . new ) . tap do |settings |
45
+ settings = options [ :settings ]
46
+ if settings . nil? || settings . is_a? ( Hash )
47
+ settings = OneLogin ::RubySaml ::Settings . new ( settings || { } )
48
+ end
49
+
50
+ settings . tap do |settings |
46
51
settings . idp_entity_id = idp_entity_id
47
52
settings . name_identifier_format = idp_name_id_format
48
53
settings . idp_sso_target_url = single_signon_service_url ( options )
0 commit comments