@@ -293,34 +293,34 @@ def assertion_consumer_service(request,
293
293
294
294
try :
295
295
response = client .parse_authn_request_response (xmlstr , BINDING_HTTP_POST , outstanding_queries )
296
- except (StatusError , ToEarly ):
296
+ except (StatusError , ToEarly ) as e :
297
297
logger .exception ("Error processing SAML Assertion." )
298
- return fail_acs_response (request )
299
- except ResponseLifetimeExceed :
298
+ return fail_acs_response (request , exception = e )
299
+ except ResponseLifetimeExceed as e :
300
300
logger .info ("SAML Assertion is no longer valid. Possibly caused by network delay or replay attack." , exc_info = True )
301
- return fail_acs_response (request )
302
- except SignatureError :
301
+ return fail_acs_response (request , exception = e )
302
+ except SignatureError as e :
303
303
logger .info ("Invalid or malformed SAML Assertion." , exc_info = True )
304
- return fail_acs_response (request )
305
- except StatusAuthnFailed :
304
+ return fail_acs_response (request , exception = e )
305
+ except StatusAuthnFailed as e :
306
306
logger .info ("Authentication denied for user by IdP." , exc_info = True )
307
- return fail_acs_response (request )
308
- except StatusRequestDenied :
307
+ return fail_acs_response (request , exception = e )
308
+ except StatusRequestDenied as e :
309
309
logger .warning ("Authentication interrupted at IdP." , exc_info = True )
310
- return fail_acs_response (request )
311
- except StatusNoAuthnContext :
310
+ return fail_acs_response (request , exception = e )
311
+ except StatusNoAuthnContext as e :
312
312
logger .warning ("Missing Authentication Context from IdP." , exc_info = True )
313
- return fail_acs_response (request )
314
- except MissingKey :
313
+ return fail_acs_response (request , exception = e )
314
+ except MissingKey as e :
315
315
logger .exception ("SAML Identity Provider is not configured correctly: certificate key is missing!" )
316
- return fail_acs_response (request )
317
- except UnsolicitedResponse :
316
+ return fail_acs_response (request , exception = e )
317
+ except UnsolicitedResponse as e :
318
318
logger .exception ("Received SAMLResponse when no request has been made." )
319
- return fail_acs_response (request )
319
+ return fail_acs_response (request , exception = e )
320
320
321
321
if response is None :
322
322
logger .warning ("Invalid SAML Assertion received (unknown error)." )
323
- return fail_acs_response (request , status = 400 , exc_class = SuspiciousOperation )
323
+ return fail_acs_response (request , status = 400 , exception = SuspiciousOperation ( 'Unknown SAML2 error' ) )
324
324
325
325
session_id = response .session_id ()
326
326
oq_cache .delete (session_id )
@@ -340,7 +340,7 @@ def assertion_consumer_service(request,
340
340
create_unknown_user = create_unknown_user )
341
341
if user is None :
342
342
logger .warning ("Could not authenticate user received in SAML Assertion. Session info: %s" , session_info )
343
- raise PermissionDenied
343
+ return fail_acs_response ( request , exception = PermissionDenied ( 'No user could be authenticated.' ))
344
344
345
345
auth .login (request , user )
346
346
_set_subject_id (request .session , session_info ['name_id' ])
0 commit comments