因此,我在网上和 StackOverflow 上对此进行了一些研究,并且尝试了很多我发现的建议。问题是我正在登录我们的一项运行良好的 Oauth2 服务。我得到一个 Oath2 JWT 令牌。我知道这是 Base64 编码的,我可以将令牌放到 jwt.io 和 www.base64decode.org 中,这两个站点都可以正确解析令牌。
我使用的是 Java 8 Base64 工具,代码如下所示:
public String getTokenProperty(String token, String propertyName)
{
byte[] bytes = Base64.getUrlDecoder().decode(token);
String decodedString = new String(bytes, StandardCharsets.UTF_8);
System.out.println("Decoded: " + decodedString);
return (new JSONObject(decodedString)).getString(propertyName);
}
解码器线上出现如下错误:
java.lang.IllegalArgumentException: Illegal base64 character 2e
我用我的 Oauth2 服务的令牌尝试了这个,我从 Syncope 得到了一个令牌,我从 Auth0 得到了一个令牌......所有返回都带有 JWT Base64 编码的令牌。使用来自这些不同服务器的所有这些令牌,我得到了同样的错误。
我想使用标准的 Java 8 Base64,但我认为我可能需要使用外部第三方 Base64 解码器。
任何帮助都会很棒。谢谢!
MYYA
墨色风雨
相关分类