Skip to content

Commit 347893b

Browse files
committed
Merge pull request SAML-Toolkits#326 from jobready/validate_destination
ensure same validations are run whether collecting errors or not
2 parents 5cfca67 + f888f28 commit 347893b

File tree

3 files changed

+45
-59
lines changed

3 files changed

+45
-59
lines changed

lib/onelogin/ruby-saml/logoutresponse.rb

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -110,22 +110,20 @@ def status_message
110110
def validate(collect_errors = false)
111111
reset_errors!
112112

113-
if collect_errors
114-
valid_state?
115-
validate_success_status
116-
validate_structure
117-
valid_in_response_to?
118-
valid_issuer?
119-
validate_signature
113+
validations = [
114+
:valid_state?,
115+
:validate_success_status,
116+
:validate_structure,
117+
:valid_in_response_to?,
118+
:valid_issuer?,
119+
:validate_signature
120+
]
120121

122+
if collect_errors
123+
validations.each { |validation| send(validation) }
121124
@errors.empty?
122125
else
123-
valid_state? &&
124-
validate_success_status &&
125-
validate_structure &&
126-
valid_in_response_to? &&
127-
valid_issuer? &&
128-
validate_signature
126+
validations.all? { |validation| send(validation) }
129127
end
130128
end
131129

lib/onelogin/ruby-saml/response.rb

Lines changed: 22 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -290,41 +290,32 @@ def allowed_clock_drift
290290
#
291291
def validate(collect_errors = false)
292292
reset_errors!
293+
return false unless validate_response_state
294+
295+
validations = [
296+
:validate_response_state,
297+
:validate_version,
298+
:validate_id,
299+
:validate_success_status,
300+
:validate_num_assertion,
301+
:validate_no_encrypted_attributes,
302+
:validate_signed_elements,
303+
:validate_structure,
304+
:validate_in_response_to,
305+
:validate_conditions,
306+
:validate_audience,
307+
:validate_destination,
308+
:validate_issuer,
309+
:validate_session_expiration,
310+
:validate_subject_confirmation,
311+
:validate_signature
312+
]
293313

294314
if collect_errors
295-
return false unless validate_response_state
296-
validate_version
297-
validate_id
298-
validate_success_status
299-
validate_num_assertion
300-
validate_no_encrypted_attributes
301-
validate_signed_elements
302-
validate_structure
303-
validate_in_response_to
304-
validate_conditions
305-
validate_audience
306-
validate_issuer
307-
validate_session_expiration
308-
validate_subject_confirmation
309-
validate_signature
315+
validations.each { |validation| send(validation) }
310316
@errors.empty?
311317
else
312-
validate_response_state &&
313-
validate_version &&
314-
validate_id &&
315-
validate_success_status &&
316-
validate_num_assertion &&
317-
validate_no_encrypted_attributes &&
318-
validate_signed_elements &&
319-
validate_structure &&
320-
validate_in_response_to &&
321-
validate_conditions &&
322-
validate_audience &&
323-
validate_destination &&
324-
validate_issuer &&
325-
validate_session_expiration &&
326-
validate_subject_confirmation &&
327-
validate_signature
318+
validations.all? { |validation| send(validation) }
328319
end
329320
end
330321

lib/onelogin/ruby-saml/slo_logoutrequest.rb

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -126,24 +126,21 @@ def session_indexes
126126
def validate(collect_errors = false)
127127
reset_errors!
128128

129-
if collect_errors
130-
validate_request_state
131-
validate_id
132-
validate_version
133-
validate_structure
134-
validate_not_on_or_after
135-
validate_issuer
136-
validate_signature
129+
validations = [
130+
:validate_request_state,
131+
:validate_id,
132+
:validate_version,
133+
:validate_structure,
134+
:validate_not_on_or_after,
135+
:validate_issuer,
136+
:validate_signature
137+
]
137138

139+
if collect_errors
140+
validations.each { |validation| send(validation) }
138141
@errors.empty?
139142
else
140-
validate_request_state &&
141-
validate_id &&
142-
validate_version &&
143-
validate_structure &&
144-
validate_not_on_or_after &&
145-
validate_issuer &&
146-
validate_signature
143+
validations.all? { |validation| send(validation) }
147144
end
148145
end
149146

0 commit comments

Comments
 (0)