【发布时间】:2019-08-27 23:33:09
【问题描述】:
我正在尝试从我的 Web 应用程序的 api 中获取一个令牌,并在 android studio 中从中解析出用户 ID。我正在使用 jjwt 来解码令牌,但遇到了这个问题。我在网上阅读,解决方案说要确保我的“秘密密钥”在 base 64 中,但它仍然会导致问题。
我尝试使用编码器和在线编码器并对我的“秘密”的 base-64 字符串进行硬编码,但仍然返回相同的问题。 有类似问题的人的链接可以在这里找到 github.com/auth0/node-jsonwebtoken/issues/208
final TextView tv = (TextView) findViewById(R.id.tvText);
final String token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjVjOWYzYWI2NzY2Mjg2NDYyNDY0YTczNCIsIm5hbWUiOiJSYW5keSIsImF2YXRhciI6Ii8vd3d3LmdyYXZhdGFyLmNvbS9hdmF0YXIvMTNhN2MyYzdkOGVkNTNkMDc2MzRkOGNlZWVkZjM0NTE_cz0yMDAmcj1wZyZkPW1tIiwiaWF0IjoxNTU0NTIxNjk1LCJleHAiOjE1NTQ1MjUyOTV9._SxRurShXS-SI3SE11z6nme9EoaD29T_DBFr8Qwngkg";
final String secret = "secret";
String secret64 = "c2VjcmV0";
String encoded = Base64.encodeToString(secret.getBytes(), Base64.DEFAULT);
Jws<Claims> jws;
try {
jws = Jwts.parser() // (1)
.setSigningKey(secret64) // (2)
.parseClaimsJws(token); // (3)
// we can safely trust the JWT
}
catch (JwtException ex) { // (4)
// we *cannot* use the JWT as intended by its creator
tv.setText(ex.toString());
}
【问题讨论】:
-
你有什么不明白的?您的“秘密”长度为 48 位,图书馆对此表示不满。
-
您几乎发布链接的 GitHub 问题似乎不相关。
-
我认为这是 jjwt 和 base 64 的问题,因为我之前返回的错误也涉及位,所以我掩盖了这个错误。感谢您的帮助
标签: java android base64 jwt token