@@ -269,34 +269,34 @@ def assertion_consumer_service(request,
269269
270270 try :
271271 response = client .parse_authn_request_response (xmlstr , BINDING_HTTP_POST , outstanding_queries )
272- except (StatusError , ToEarly ):
272+ except (StatusError , ToEarly ) as e :
273273 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 :
276276 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 :
279279 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 :
282282 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 :
285285 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 :
288288 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 :
291291 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 :
294294 logger .exception ("Received SAMLResponse when no request has been made." )
295- return fail_acs_response (request )
295+ return fail_acs_response (request , exception = e )
296296
297297 if response is None :
298298 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' ) )
300300
301301 session_id = response .session_id ()
302302 oq_cache .delete (session_id )
@@ -316,7 +316,7 @@ def assertion_consumer_service(request,
316316 create_unknown_user = create_unknown_user )
317317 if user is None :
318318 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.' ))
320320
321321 auth .login (request , user )
322322 _set_subject_id (request .session , session_info ['name_id' ])
0 commit comments