fix: update error handling in Visione redirect and callback views for consistency

This commit is contained in:
gabdevele
2026-06-18 14:26:44 +02:00 Unverified
parent 9b99ed0597
commit 5111e8cefa
+19 -19
View File
@@ -34,7 +34,7 @@ def _visione_error_redirect(request, error, error_description="", status=302):
if frontend_redirect_uri: if frontend_redirect_uri:
params = { params = {
"state": request.session.get("visione_state", ""), "state": request.session.get("visione_state", ""),
"error": error, "cie_error": error,
} }
if error_description: if error_description:
params["error_description"] = error_description params["error_description"] = error_description
@@ -49,7 +49,7 @@ class VisioneRpBeginView(SpidCieOidcRpBeginView):
if getattr(response, "status_code", None) and response.status_code >= 400: if getattr(response, "status_code", None) and response.status_code >= 400:
frontend_redirect = _visione_error_redirect( frontend_redirect = _visione_error_redirect(
request, request,
"request_rejected", "failed",
"Authentication request rejected", "Authentication request rejected",
) )
if frontend_redirect: if frontend_redirect:
@@ -76,7 +76,7 @@ class VisioneRpCallbackView(SpidCieOidcRpCallbackView):
if "error" in request.GET and _visione_redirect_uri(request): if "error" in request.GET and _visione_redirect_uri(request):
return _visione_error_redirect( return _visione_error_redirect(
request, request,
request.GET.get("error", "invalid_request"), request.GET.get("error", "failed"),
request.GET.get("error_description", ""), request.GET.get("error_description", ""),
) )
request_args = {k: v for k, v in request.GET.items()} request_args = {k: v for k, v in request.GET.items()}
@@ -90,13 +90,13 @@ class VisioneRpCallbackView(SpidCieOidcRpCallbackView):
except ValidationException: except ValidationException:
return _visione_error_redirect( return _visione_error_redirect(
request, request,
"invalid_request", "verification_error",
"Authn response object validation failed", "Authn response object validation failed",
) or render( ) or render(
request, request,
self.error_template, self.error_template,
{ {
"error": "invalid_request", "error": "verification_error",
"error_description": "Authn response object validation failed", "error_description": "Authn response object validation failed",
**visione_rp_error_context(request), **visione_rp_error_context(request),
}, },
@@ -106,13 +106,13 @@ class VisioneRpCallbackView(SpidCieOidcRpCallbackView):
if not authz: if not authz:
return _visione_error_redirect( return _visione_error_redirect(
request, request,
"unauthorized_request", "invalid_session",
"Authentication not found", "Authentication not found",
) or render( ) or render(
request, request,
self.error_template, self.error_template,
{ {
"error": "unauthorized request", "error": "invalid_session",
"error_description": _("Authentication not found"), "error_description": _("Authentication not found"),
**visione_rp_error_context(request), **visione_rp_error_context(request),
}, },
@@ -123,13 +123,13 @@ class VisioneRpCallbackView(SpidCieOidcRpCallbackView):
if request.GET.get("iss") and request.GET["iss"] != authz.provider_id: if request.GET.get("iss") and request.GET["iss"] != authz.provider_id:
return _visione_error_redirect( return _visione_error_redirect(
request, request,
"invalid_request", "verification_error",
"authn response validation failed: mixups attack prevention.", "authn response validation failed: mixups attack prevention.",
) or render( ) or render(
request, request,
self.error_template, self.error_template,
{ {
"error": "invalid request", "error": "verification_error",
"error_description": _( "error_description": _(
"authn response validation failed: mixups attack prevention." "authn response validation failed: mixups attack prevention."
), ),
@@ -146,13 +146,13 @@ class VisioneRpCallbackView(SpidCieOidcRpCallbackView):
if not self.rp_conf: if not self.rp_conf:
return _visione_error_redirect( return _visione_error_redirect(
request, request,
"invalid_request", "verification_error",
"Relying party not found", "Relying party not found",
) or render( ) or render(
request, request,
self.error_template, self.error_template,
{ {
"error": "invalid request", "error": "verification_error",
"error_description": _("Relying party not found"), "error_description": _("Relying party not found"),
**visione_rp_error_context(request), **visione_rp_error_context(request),
}, },
@@ -173,13 +173,13 @@ class VisioneRpCallbackView(SpidCieOidcRpCallbackView):
if not token_response: if not token_response:
return _visione_error_redirect( return _visione_error_redirect(
request, request,
"invalid_token_response", "verification_error",
"Token response seems not to be valid", "Token response seems not to be valid",
) or render( ) or render(
request, request,
self.error_template, self.error_template,
{ {
"error": "invalid token response", "error": "verification_error",
"error_description": _("Token response seems not to be valid"), "error_description": _("Token response seems not to be valid"),
**visione_rp_error_context(request), **visione_rp_error_context(request),
}, },
@@ -195,13 +195,13 @@ class VisioneRpCallbackView(SpidCieOidcRpCallbackView):
except ValidationException: except ValidationException:
return _visione_error_redirect( return _visione_error_redirect(
request, request,
"invalid_request", "verification_error",
"Token response object validation failed", "Token response object validation failed",
) or render( ) or render(
request, request,
self.error_template, self.error_template,
{ {
"error": "invalid_request", "error": "verification_error",
"error_description": "Token response object validation failed", "error_description": "Token response object validation failed",
**visione_rp_error_context(request), **visione_rp_error_context(request),
}, },
@@ -216,13 +216,13 @@ class VisioneRpCallbackView(SpidCieOidcRpCallbackView):
if not op_ac_jwk or not op_id_jwk: if not op_ac_jwk or not op_id_jwk:
return _visione_error_redirect( return _visione_error_redirect(
request, request,
"invalid_token", "verification_error",
"Authentication token seems not to be valid.", "Authentication token seems not to be valid.",
) or render( ) or render(
request, request,
self.error_template, self.error_template,
{ {
"error": "invalid_token", "error": "verification_error",
"error_description": _("Authentication token seems not to be valid."), "error_description": _("Authentication token seems not to be valid."),
**visione_rp_error_context(request), **visione_rp_error_context(request),
}, },
@@ -238,13 +238,13 @@ class VisioneRpCallbackView(SpidCieOidcRpCallbackView):
logger.warning("Token validation error: %s", exc) logger.warning("Token validation error: %s", exc)
return _visione_error_redirect( return _visione_error_redirect(
request, request,
"token_verification_failed", "verification_error",
"Authentication token validation error.", "Authentication token validation error.",
) or render( ) or render(
request, request,
self.error_template, self.error_template,
{ {
"error": "token verification failed", "error": "verification_error",
"error_description": _("Authentication token validation error."), "error_description": _("Authentication token validation error."),
**visione_rp_error_context(request), **visione_rp_error_context(request),
}, },