@@ -269,34 +269,34 @@ def assertion_consumer_service(request,
269
269
270
270
try :
271
271
response = client .parse_authn_request_response (xmlstr , BINDING_HTTP_POST , outstanding_queries )
272
- except (StatusError , ToEarly ):
272
+ except (StatusError , ToEarly ) as e :
273
273
logger .exception ("Error processing SAML Assertion." )
274
- return fail_acs_response (request )
275
- except ResponseLifetimeExceed :
274
+ return fail_acs_response (request , exception = e )
275
+ except ResponseLifetimeExceed as e :
276
276
logger .info ("SAML Assertion is no longer valid. Possibly caused by network delay or replay attack." , exc_info = True )
277
- return fail_acs_response (request )
278
- except SignatureError :
277
+ return fail_acs_response (request , exception = e )
278
+ except SignatureError as e :
279
279
logger .info ("Invalid or malformed SAML Assertion." , exc_info = True )
280
- return fail_acs_response (request )
281
- except StatusAuthnFailed :
280
+ return fail_acs_response (request , exception = e )
281
+ except StatusAuthnFailed as e :
282
282
logger .info ("Authentication denied for user by IdP." , exc_info = True )
283
- return fail_acs_response (request )
284
- except StatusRequestDenied :
283
+ return fail_acs_response (request , exception = e )
284
+ except StatusRequestDenied as e :
285
285
logger .warning ("Authentication interrupted at IdP." , exc_info = True )
286
- return fail_acs_response (request )
287
- except StatusNoAuthnContext :
286
+ return fail_acs_response (request , exception = e )
287
+ except StatusNoAuthnContext as e :
288
288
logger .warning ("Missing Authentication Context from IdP." , exc_info = True )
289
- return fail_acs_response (request )
290
- except MissingKey :
289
+ return fail_acs_response (request , exception = e )
290
+ except MissingKey as e :
291
291
logger .exception ("SAML Identity Provider is not configured correctly: certificate key is missing!" )
292
- return fail_acs_response (request )
293
- except UnsolicitedResponse :
292
+ return fail_acs_response (request , exception = e )
293
+ except UnsolicitedResponse as e :
294
294
logger .exception ("Received SAMLResponse when no request has been made." )
295
- return fail_acs_response (request )
295
+ return fail_acs_response (request , exception = e )
296
296
297
297
if response is None :
298
298
logger .warning ("Invalid SAML Assertion received (unknown error)." )
299
- return fail_acs_response (request , status = 400 , exc_class = SuspiciousOperation )
299
+ return fail_acs_response (request , status = 400 , exception = SuspiciousOperation ( 'Unknown SAML2 error' ) )
300
300
301
301
session_id = response .session_id ()
302
302
oq_cache .delete (session_id )
@@ -316,7 +316,7 @@ def assertion_consumer_service(request,
316
316
create_unknown_user = create_unknown_user )
317
317
if user is None :
318
318
logger .warning ("Could not authenticate user received in SAML Assertion. Session info: %s" , session_info )
319
- raise PermissionDenied
319
+ return fail_acs_response ( request , exception = PermissionDenied ( 'No user could be authenticated.' ))
320
320
321
321
auth .login (request , user )
322
322
_set_subject_id (request .session , session_info ['name_id' ])
0 commit comments