CAS: améliore traitement erreurs réponse serveur CAS

This commit is contained in:
Emmanuel Viennet 2025-01-23 13:59:44 +01:00
parent ad1d8c3541
commit 952d2e2bd8
3 changed files with 11 additions and 4 deletions

View File

@ -114,7 +114,7 @@ def logout():
return flask.redirect(redirect_url) return flask.redirect(redirect_url)
def validate(ticket): def validate(ticket) -> bool:
""" """
Will attempt to validate the ticket. If validation fails, then False Will attempt to validate the ticket. If validation fails, then False
is returned. If validation is successful, then True is returned is returned. If validation is successful, then True is returned
@ -172,15 +172,22 @@ def validate(ticket):
if "cas:authenticationSuccess" in xml_from_dict["cas:serviceResponse"] if "cas:authenticationSuccess" in xml_from_dict["cas:serviceResponse"]
else False else False
) )
except (ValueError, ExpatError) as exc: except (ValueError, ExpatError, KeyError) as exc:
current_app.logger.error(f"CAS returned unexpected result: {exc}") current_app.logger.error(f"CAS returned unexpected result: {exc}")
current_app.logger.error(f"Received data from CAS server:\n{xmldump}\n\n")
if cas_error_callback: if cas_error_callback:
cas_error_callback("réponse invalide du serveur CAS") cas_error_callback("réponse invalide du serveur CAS")
return False # unreachable (cas_error_callback should raise exception)
except URLError: except URLError:
current_app.logger.error("CAS : error validating token: check SSL certificate") current_app.logger.error("CAS : error validating token: check SSL certificate")
cas_error_callback( cas_error_callback(
"erreur connexion au serveur CAS: vérifiez le certificat SSL" "erreur connexion au serveur CAS: vérifiez le certificat SSL"
) )
return False # unreachable
except Exception as exc:
current_app.logger.error(f"CAS : unkown error validating token: {exc}")
cas_error_callback("erreur décodage réponse CAS")
return False # unreachable
if is_valid: if is_valid:
current_app.logger.debug("valid") current_app.logger.debug("valid")

View File

@ -3,7 +3,7 @@
"Infos sur version ScoDoc" "Infos sur version ScoDoc"
SCOVERSION = "9.7.58" SCOVERSION = "9.7.59"
SCONAME = "ScoDoc" SCONAME = "ScoDoc"

View File

@ -491,7 +491,7 @@ def user_edit(
dept=None, dept=None,
verbose=False, verbose=False,
): ):
"""Add or remove a role to the given user in the given dept""" """Modify or display user's account attributes."""
user: User = User.query.filter_by(user_name=username).first() user: User = User.query.filter_by(user_name=username).first()
if not user: if not user:
sys.stderr.write(f"user_role: user {username} does not exists\n") sys.stderr.write(f"user_role: user {username} does not exists\n")