diff --git a/devkit-core/pom.xml b/devkit-core/pom.xml
index 25d0721..7dec29c 100644
--- a/devkit-core/pom.xml
+++ b/devkit-core/pom.xml
@@ -23,7 +23,7 @@
cn.org.codecrafters
jdevkit
- 1.2.1
+ 1.2.2
devkit-core
diff --git a/devkit-utils/pom.xml b/devkit-utils/pom.xml
index d5c02e6..dffd983 100644
--- a/devkit-utils/pom.xml
+++ b/devkit-utils/pom.xml
@@ -6,7 +6,7 @@
cn.org.codecrafters
jdevkit
- 1.2.1
+ 1.2.2
devkit-utils
diff --git a/devkit-utils/src/main/java/cn/org/codecrafters/devkit/utils/Base64Util.java b/devkit-utils/src/main/java/cn/org/codecrafters/devkit/utils/Base64Util.java
index 309b83c..0f38bc6 100644
--- a/devkit-utils/src/main/java/cn/org/codecrafters/devkit/utils/Base64Util.java
+++ b/devkit-utils/src/main/java/cn/org/codecrafters/devkit/utils/Base64Util.java
@@ -60,6 +60,10 @@ public final class Base64Util {
private static Base64.Decoder decoder;
+ private static Base64.Encoder urlEncoder;
+
+ private static Base64.Decoder urlDecoder;
+
/**
* Ensure that there is only one Base64 Encoder.
*
@@ -84,6 +88,20 @@ public final class Base64Util {
return decoder;
}
+ private static Base64.Encoder getUrlEncoder() {
+ if (Objects.isNull(urlEncoder)) {
+ urlEncoder = Base64.getUrlEncoder();
+ }
+ return urlEncoder;
+ }
+
+ public static Base64.Decoder getUrlDecoder() {
+ if (Objects.isNull(urlDecoder)) {
+ urlDecoder = Base64.getUrlDecoder();
+ }
+ return urlDecoder;
+ }
+
/**
* Private constructor to prevent instantiation of the class.
*/
@@ -136,4 +154,50 @@ public final class Base64Util {
return decode(value, StandardCharsets.UTF_8);
}
+ /**
+ * Encodes the given string using the specified charset.
+ *
+ * @param value the string to be encoded
+ * @param charset the charset to be used for encoding
+ * @return the Base64 encoded string
+ */
+ public static String encodeUrlComponents(String value, Charset charset) {
+ var encoded = getUrlEncoder().encode(value.getBytes(charset));
+
+ return new String(encoded);
+ }
+
+ /**
+ * Encodes the given string using the default UTF-8 charset.
+ *
+ * @param value the string to be encoded
+ * @return the Base64 encoded string
+ */
+ public static String encodeUrlComponents(String value) {
+ return encodeUrlComponents(value, StandardCharsets.UTF_8);
+ }
+
+ /**
+ * Decodes the given Base64 encoded string using the specified charset.
+ *
+ * @param value the Base64 encoded string to be decoded
+ * @param charset the charset to be used for decoding
+ * @return the decoded string
+ */
+ public static String decodeUrlComponents(String value, Charset charset) {
+ var decoded = getUrlDecoder().decode(value.getBytes(charset));
+
+ return new String(decoded);
+ }
+
+ /**
+ * Decodes the given Base64 encoded string using the default UTF-8 charset.
+ *
+ * @param value the Base64 encoded string to be decoded
+ * @return the decoded string
+ */
+ public static String decodeUrlComponents(String value) {
+ return decodeUrlComponents(value, StandardCharsets.UTF_8);
+ }
+
}
\ No newline at end of file
diff --git a/guid/pom.xml b/guid/pom.xml
index b2b7834..4faf31a 100644
--- a/guid/pom.xml
+++ b/guid/pom.xml
@@ -23,7 +23,7 @@
cn.org.codecrafters
jdevkit
- 1.2.1
+ 1.2.2
guid
diff --git a/pom.xml b/pom.xml
index ed4d4c5..fd66d6f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,7 +29,7 @@
cn.org.codecrafters
jdevkit
- 1.2.1
+ 1.2.2
2023
pom
@@ -93,6 +93,7 @@
2.15.2
4.4.0
0.11.5
+ 4.11.0
6.0.9
diff --git a/property-guard-spring-boot-starter/pom.xml b/property-guard-spring-boot-starter/pom.xml
index a76a95f..b563253 100644
--- a/property-guard-spring-boot-starter/pom.xml
+++ b/property-guard-spring-boot-starter/pom.xml
@@ -23,7 +23,7 @@
cn.org.codecrafters
jdevkit
- 1.2.1
+ 1.2.2
property-guard-spring-boot-starter
diff --git a/simple-jwt-authzero/pom.xml b/simple-jwt-authzero/pom.xml
index 832e7c9..fa745a1 100644
--- a/simple-jwt-authzero/pom.xml
+++ b/simple-jwt-authzero/pom.xml
@@ -23,7 +23,7 @@
cn.org.codecrafters
jdevkit
- 1.2.1
+ 1.2.2
simple-jwt-authzero
diff --git a/simple-jwt-authzero/src/main/java/cn/org/codecrafters/simplejwt/authzero/AuthzeroTokenResolver.java b/simple-jwt-authzero/src/main/java/cn/org/codecrafters/simplejwt/authzero/AuthzeroTokenResolver.java
index e60e1d4..80d3eaa 100644
--- a/simple-jwt-authzero/src/main/java/cn/org/codecrafters/simplejwt/authzero/AuthzeroTokenResolver.java
+++ b/simple-jwt-authzero/src/main/java/cn/org/codecrafters/simplejwt/authzero/AuthzeroTokenResolver.java
@@ -429,7 +429,7 @@ public class AuthzeroTokenResolver implements TokenResolver {
public T extract(String token, Class targetType) {
try {
// Get claims from token.
- var payloads = objectMapper.readValue(Base64Util.decode(resolve(token).getPayload()), new MapTypeReference());
+ var payloads = objectMapper.readValue(Base64Util.decodeUrlComponents(resolve(token).getPayload()), new MapTypeReference());
// Get the no-argument constructor to create an instance.
var bean = targetType.getConstructor().newInstance();
@@ -478,7 +478,7 @@ public class AuthzeroTokenResolver implements TokenResolver {
var resolved = resolve(oldToken);
try {
- var payload = objectMapper.readValue(Base64Util.decode(resolved.getPayload()), ObjectNode.class);
+ var payload = objectMapper.readValue(Base64Util.decodeUrlComponents(resolved.getPayload()), ObjectNode.class);
payload.remove(PredefinedKeys.KEYS);
var payloadMap = objectMapper.convertValue(payload, new MapTypeReference());
diff --git a/simple-jwt-facade/pom.xml b/simple-jwt-facade/pom.xml
index 6063b5a..6113b84 100644
--- a/simple-jwt-facade/pom.xml
+++ b/simple-jwt-facade/pom.xml
@@ -23,7 +23,7 @@
cn.org.codecrafters
jdevkit
- 1.2.1
+ 1.2.2
simple-jwt-facade
diff --git a/simple-jwt-jjwt/pom.xml b/simple-jwt-jjwt/pom.xml
index 26b9d47..79f5dbd 100644
--- a/simple-jwt-jjwt/pom.xml
+++ b/simple-jwt-jjwt/pom.xml
@@ -23,7 +23,7 @@
cn.org.codecrafters
jdevkit
- 1.2.1
+ 1.2.2
simple-jwt-jjwt
diff --git a/simple-jwt-spring-boot-starter/pom.xml b/simple-jwt-spring-boot-starter/pom.xml
index 704cfbe..0bb9514 100644
--- a/simple-jwt-spring-boot-starter/pom.xml
+++ b/simple-jwt-spring-boot-starter/pom.xml
@@ -23,7 +23,7 @@
cn.org.codecrafters
jdevkit
- 1.2.1
+ 1.2.2
simple-jwt-spring-boot-starter
diff --git a/webcal/pom.xml b/webcal/pom.xml
index 366cc44..368f2eb 100644
--- a/webcal/pom.xml
+++ b/webcal/pom.xml
@@ -23,7 +23,7 @@
cn.org.codecrafters
jdevkit
- 1.2.1
+ 1.2.2
webcal