1010from satosa import util
1111from satosa .response import Redirect
1212from satosa .response import BadRequest
13+ from satosa .response import NotFound
1314from .context import Context
1415from .exception import SATOSAError
1516from .exception import SATOSAAuthenticationError
@@ -268,7 +269,11 @@ def run(self, context):
268269 }
269270 logline = lu .LOG_FMT .format (id = lu .get_session_id (context .state ), message = msg )
270271 logger .error (logline )
271- return BadRequest (e .error )
272+ generic_error_url = self .config .get ("ERROR_URL" )
273+ if generic_error_url :
274+ return Redirect (generic_error_url )
275+ else :
276+ return BadRequest (e .error )
272277 except SATOSAMissingStateError as e :
273278 msg = {
274279 "message" : "Missing SATOSA State" ,
@@ -277,8 +282,9 @@ def run(self, context):
277282 }
278283 logline = lu .LOG_FMT .format (id = lu .get_session_id (context .state ), message = msg )
279284 logger .error (logline )
280- if self .config .get ("ERROR_URL" ):
281- return Redirect (self .config .get ("ERROR_URL" ))
285+ generic_error_url = self .config .get ("ERROR_URL" )
286+ if generic_error_url :
287+ return Redirect (generic_error_url )
282288 else :
283289 raise
284290 except SATOSAAuthenticationFlowError as e :
@@ -289,30 +295,43 @@ def run(self, context):
289295 }
290296 logline = lu .LOG_FMT .format (id = lu .get_session_id (context .state ), message = msg )
291297 logger .error (logline )
292- if self .config .get ("ERROR_URL" ):
293- return Redirect (self .config .get ("ERROR_URL" ))
298+ generic_error_url = self .config .get ("ERROR_URL" )
299+ if generic_error_url :
300+ return Redirect (generic_error_url )
294301 else :
295302 raise
296- except SATOSANoBoundEndpointError :
297- raise
303+ except SATOSANoBoundEndpointError as e :
304+ msg = str (e )
305+ logline = lu .LOG_FMT .format (id = lu .get_session_id (context .state ), message = msg )
306+ logger .error (logline )
307+ return NotFound ("The Service or Identity Provider you requested could not be found." )
298308 except SATOSAError :
299309 msg = "Uncaught SATOSA error"
300310 logline = lu .LOG_FMT .format (id = lu .get_session_id (context .state ), message = msg )
301- logger .error (logline , exc_info = True )
302- raise
303- except UnknownSystemEntity as err :
304- msg = "configuration error: unknown system entity " + str (err )
311+ logger .error (logline )
312+ generic_error_url = self .config .get ("ERROR_URL" )
313+ if generic_error_url :
314+ return Redirect (generic_error_url )
315+ else :
316+ raise
317+ except UnknownSystemEntity as e :
318+ msg = f"Configuration error: unknown system entity: { e } "
305319 logline = lu .LOG_FMT .format (id = lu .get_session_id (context .state ), message = msg )
306- logger .error (logline , exc_info = False )
307- raise
308- except Exception as err :
320+ logger .error (logline )
321+ generic_error_url = self .config .get ("ERROR_URL" )
322+ if generic_error_url :
323+ return Redirect (generic_error_url )
324+ else :
325+ raise
326+ except Exception as e :
309327 msg = "Uncaught exception"
310328 logline = lu .LOG_FMT .format (id = lu .get_session_id (context .state ), message = msg )
311- logger .error (logline , exc_info = True )
312- if self .config .get ("ERROR_URL" ):
313- return Redirect (self .config .get ("ERROR_URL" ))
329+ logger .error (logline )
330+ generic_error_url = self .config .get ("ERROR_URL" )
331+ if generic_error_url :
332+ return Redirect (generic_error_url )
314333 else :
315- raise SATOSAUnknownError ("Unknown error" ) from err
334+ raise SATOSAUnknownError ("Unknown error" ) from e
316335 return resp
317336
318337
0 commit comments