fix: Fix the issue that reports illegal base64 character when decoding a JWT Payload

This commit is contained in:
Zihlu Wang
2024-01-25 23:34:20 +08:00
parent e1f2b937a9
commit e8c124d8ec
2 changed files with 66 additions and 2 deletions
@@ -429,7 +429,7 @@ public class AuthzeroTokenResolver implements TokenResolver<DecodedJWT> {
public <T extends TokenPayload> T extract(String token, Class<T> 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<DecodedJWT> {
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());