@@ -293,34 +293,34 @@ def assertion_consumer_service(request,
293293
294294 try :
295295 response = client .parse_authn_request_response (xmlstr , BINDING_HTTP_POST , outstanding_queries )
296- except (StatusError , ToEarly ):
296+ except (StatusError , ToEarly ) as e :
297297 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 :
300300 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 :
303303 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 :
306306 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 :
309309 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 :
312312 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 :
315315 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 :
318318 logger .exception ("Received SAMLResponse when no request has been made." )
319- return fail_acs_response (request )
319+ return fail_acs_response (request , exception = e )
320320
321321 if response is None :
322322 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' ) )
324324
325325 session_id = response .session_id ()
326326 oq_cache .delete (session_id )
@@ -340,7 +340,7 @@ def assertion_consumer_service(request,
340340 create_unknown_user = create_unknown_user )
341341 if user is None :
342342 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.' ))
344344
345345 auth .login (request , user )
346346 _set_subject_id (request .session , session_info ['name_id' ])
0 commit comments