fix: update error handling in Visione redirect and callback views for consistency
This commit is contained in:
@@ -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),
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user