@Override public Map<String, Object> verify(String token) throws TokenVerifyException { Args.notEmpty(token, "token"); String[] parts = Strings.split(token, '.'); if (parts.length < 2 || parts.length > 3) { throw new TokenVerifyException(ErrorCode.INVALID_TOKEN, "Invalid jwt token, wrong number of parts: " + parts.length); } String content; String payload; String signature; if (parts.length == 2) { content = parts[0]; payload = parts[0]; signature = parts[1]; } else { content = parts[0] + "." + parts[1]; payload = parts[1]; signature = parts[2]; } if (payload.isEmpty() || signature.isEmpty()) { throw new TokenVerifyException(ErrorCode.INVALID_TOKEN, "Invalid jwt token, both payload and signature parts must not be empty"); } return verify(content, payload, signature); }