protected Map<String, Object> verify(String content, String payload, String signature) {
if (!verifySignature(content, signature)) {
throw new TokenVerifyException(ErrorCode.INVALID_SIGNATURE, "Signature verification failed");
}
JsonValue json;
try {
json = JSON.parse(JWT.base64UrlDeocodeToString(payload));
} catch (Exception e) {
throw new TokenVerifyException(ErrorCode.INVALID_PAYLOAD, "Parse payload as json object failed, " + e.getMessage());
}
if (!json.isMap()) {
throw new TokenVerifyException(ErrorCode.INVALID_PAYLOAD, "The payload must be json object '{..}'");
}
Map<String, Object> claims = json.asMap();
verifyExpiration(claims);
return claims;
}