Skip to content

Commit af856f6

Browse files
committed
Improve endpoints parser
1 parent 67a1b14 commit af856f6

File tree

1 file changed

+18
-14
lines changed

1 file changed

+18
-14
lines changed

lib/onelogin/ruby-saml/idp_metadata_parser.rb

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -142,13 +142,15 @@ def single_signon_service_binding(binding_priority = nil)
142142
# @return [String|nil] SingleSignOnService endpoint if exists
143143
#
144144
def single_signon_service_url(options = {})
145-
binding = options[:sso_binding] || single_signon_service_binding || "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
146-
node = REXML::XPath.first(
147-
document,
148-
"/md:EntityDescriptor/md:IDPSSODescriptor/md:SingleSignOnService[@Binding=\"#{binding}\"]/@Location",
149-
{ "md" => METADATA }
150-
)
151-
node.value if node
145+
binding = single_signon_service_binding(options[:sso_binding])
146+
unless binding.nil?
147+
node = REXML::XPath.first(
148+
document,
149+
"/md:EntityDescriptor/md:IDPSSODescriptor/md:SingleSignOnService[@Binding=\"#{binding}\"]/@Location",
150+
{ "md" => METADATA }
151+
)
152+
return node.value if node
153+
end
152154
end
153155

154156
# @param binding_priority [Array]
@@ -172,13 +174,15 @@ def single_logout_service_binding(binding_priority = nil)
172174
# @return [String|nil] SingleLogoutService endpoint if exists
173175
#
174176
def single_logout_service_url(options = {})
175-
binding = options[:slo_binding] || single_logout_service_binding || "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
176-
node = REXML::XPath.first(
177-
document,
178-
"/md:EntityDescriptor/md:IDPSSODescriptor/md:SingleLogoutService[@Binding=\"#{binding}\"]/@Location",
179-
{ "md" => METADATA }
180-
)
181-
node.value if node
177+
binding = single_logout_service_binding(options[:slo_binding])
178+
unless binding.nil?
179+
node = REXML::XPath.first(
180+
document,
181+
"/md:EntityDescriptor/md:IDPSSODescriptor/md:SingleLogoutService[@Binding=\"#{binding}\"]/@Location",
182+
{ "md" => METADATA }
183+
)
184+
return node.value if node
185+
end
182186
end
183187

184188
# @return [String|nil] Unformatted Certificate if exists

0 commit comments

Comments
 (0)