Skip to content

Commit 7e3bcb9

Browse files
committed
Fixed hard validation of SAML Success response
1 parent 9f6f22b commit 7e3bcb9

1 file changed

Lines changed: 16 additions & 1 deletion

File tree

lib/onelogin/ruby-saml/response.rb

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,13 @@ def success?
9898
end
9999
end
100100

101+
def status_message
102+
@status_message ||= begin
103+
node = REXML::XPath.first(document, "/p:Response/p:Status/p:StatusMessage", { "p" => PROTOCOL, "a" => ASSERTION })
104+
node.text if node
105+
end
106+
end
107+
101108
# Conditions (if any) for the assertion to run
102109
def conditions
103110
@conditions ||= xpath_first_from_signed_assertion('/a:Conditions')
@@ -130,7 +137,15 @@ def validate(soft = true)
130137
validate_response_state(soft) &&
131138
validate_conditions(soft) &&
132139
document.validate_document(get_fingerprint, soft) &&
133-
success?
140+
validate_success_status(soft)
141+
end
142+
143+
def validate_success_status(soft = true)
144+
if success?
145+
true
146+
else
147+
soft ? false : validation_error(status_message)
148+
end
134149
end
135150

136151
def validate_structure(soft = true)

0 commit comments

Comments
 (0)