From 1b8c8110906e24ec01f4d0b56e6dc2e5b871c851 Mon Sep 17 00:00:00 2001 From: Thomas <> Date: Mon, 27 Jan 2025 09:23:27 +0100 Subject: fix(sl20): wrong HTTP status-codes in case of a generic SL20 error-response --- .../auth/sl20/tasks/AbstractReceiveQualEidTask.java | 3 ++- .../modules/auth/sl20/utils/SL20ResponseUtils.java | 21 +++++++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/tasks/AbstractReceiveQualEidTask.java b/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/tasks/AbstractReceiveQualEidTask.java index b201241b..7af20a97 100644 --- a/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/tasks/AbstractReceiveQualEidTask.java +++ b/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/tasks/AbstractReceiveQualEidTask.java @@ -140,7 +140,8 @@ public abstract class AbstractReceiveQualEidTask extends AbstractAuthServletTask } else { log.warn("Return with SL20-General-transport-Binding-error, because no request object was found"); - SL20ResponseUtils.buildErrorResponse(response, "2000", "General transport Binding error"); + SL20ResponseUtils.buildErrorResponse(response, "2000", "General transport Binding error", + HttpServletResponse.SC_BAD_REQUEST); } } diff --git a/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/utils/SL20ResponseUtils.java b/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/utils/SL20ResponseUtils.java index af292964..8f3e9954 100644 --- a/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/utils/SL20ResponseUtils.java +++ b/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/utils/SL20ResponseUtils.java @@ -38,18 +38,35 @@ public class SL20ResponseUtils { public static void buildErrorResponse(final HttpServletResponse response, final String errorCode, final String errorMsg) throws Exception { + buildErrorResponse(response, errorCode, errorMsg, HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + + } + + /** + * Build a generic SL2.x error-response without redirect to AuthHandler. + * + * @param response http response object + * @param errorCode ErrorCode + * @param errorMsg Error message + * @param httpStatusCode HTTP response status-code + * @throws Exception In case of a message generation error + */ + public static void buildErrorResponse(final HttpServletResponse response, + final String errorCode, final String errorMsg, int httpStatusCode) + throws Exception { final ObjectNode error = SL20JsonBuilderUtils.createErrorCommandResult(errorCode, errorMsg); final ObjectNode errorCommand = SL20JsonBuilderUtils .createCommandResponse(SL20Constants.SL20_COMMAND_IDENTIFIER_ERROR, error, null); - final ObjectNode respContainer = SL20JsonBuilderUtils.createGenericResponse(UUID.randomUUID().toString(), null, + final ObjectNode respContainer = SL20JsonBuilderUtils.createGenericResponse(UUID.randomUUID().toString(), + null, null, errorCommand, null); log.trace("SL20 response to VDA: " + respContainer); final StringWriter writer = new StringWriter(); writer.write(respContainer.toString()); final byte[] content = writer.toString().getBytes("UTF-8"); - response.setStatus(HttpServletResponse.SC_OK); + response.setStatus(httpStatusCode); response.setContentLength(content.length); response.setContentType(ContentType.APPLICATION_JSON.toString()); response.getOutputStream().write(content); -- cgit v1.2.3