10
10
from satosa import util
11
11
from satosa .response import Redirect
12
12
from satosa .response import BadRequest
13
+ from satosa .response import NotFound
13
14
from .context import Context
14
15
from .exception import SATOSAError
15
16
from .exception import SATOSAAuthenticationError
@@ -268,7 +269,11 @@ def run(self, context):
268
269
}
269
270
logline = lu .LOG_FMT .format (id = lu .get_session_id (context .state ), message = msg )
270
271
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 )
272
277
except SATOSAMissingStateError as e :
273
278
msg = {
274
279
"message" : "Missing SATOSA State" ,
@@ -277,8 +282,9 @@ def run(self, context):
277
282
}
278
283
logline = lu .LOG_FMT .format (id = lu .get_session_id (context .state ), message = msg )
279
284
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 )
282
288
else :
283
289
raise
284
290
except SATOSAAuthenticationFlowError as e :
@@ -289,30 +295,43 @@ def run(self, context):
289
295
}
290
296
logline = lu .LOG_FMT .format (id = lu .get_session_id (context .state ), message = msg )
291
297
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 )
294
301
else :
295
302
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." )
298
308
except SATOSAError :
299
309
msg = "Uncaught SATOSA error"
300
310
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 } "
305
319
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 :
309
327
msg = "Uncaught exception"
310
328
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 )
314
333
else :
315
- raise SATOSAUnknownError ("Unknown error" ) from err
334
+ raise SATOSAUnknownError ("Unknown error" ) from e
316
335
return resp
317
336
318
337
0 commit comments