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 3135ab464183c24d90f6d446fc4faec2678f765b..85c18edb1889ecdebdb31dc6f32317df77594ffc 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) {