From d67fa44b995994d71eb0dd42c63bb6abea52a0cb Mon Sep 17 00:00:00 2001 From: Jan Zickermann <jan.zickermann@dataport.de> Date: Fri, 8 Nov 2024 14:39:41 +0100 Subject: [PATCH] #2 Cleanup JwtParser --- .../postfach/osiv2/extension/JwtParser.java | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/extension/JwtParser.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/extension/JwtParser.java index 3135ab4..85c18ed 100644 --- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/extension/JwtParser.java +++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/extension/JwtParser.java @@ -11,17 +11,27 @@ public class JwtParser { @SneakyThrows public static ReadContext parseBody(String authorizationHeaderValue) { - var jwt = authorizationHeaderValue.substring("Bearer ".length()); - // Step 2: Split the JWT - String[] jwtParts = jwt.split("\\."); + var jwtParts = splitIntoSignatureAndHeaderAndBody( + discardBearerPrefix(authorizationHeaderValue) + ); + var bodyPart = jwtParts[1]; + return parseJsonPartFromUrlEncodedBase64(bodyPart); + } + + private static ReadContext parseJsonPartFromUrlEncodedBase64(String base64EncodedPayload) { + return JsonPath.parse(new String(base64UrlDecode(base64EncodedPayload))); + } + private static String discardBearerPrefix(String authorizationHeaderValue) { + return authorizationHeaderValue.substring("Bearer ".length()); + } + + private static String[] splitIntoSignatureAndHeaderAndBody(String jwt) { + var jwtParts = jwt.split("\\."); if (jwtParts.length != 3) { throw new IllegalArgumentException("Invalid JWT token"); } - - // Step 3: Base64Url decode the Payload part - var payloadJson = base64UrlDecode(jwtParts[1]); - return JsonPath.parse(new String(payloadJson)); + return jwtParts; } private static byte[] base64UrlDecode(String input) { -- GitLab