JWT生成与解析遇到的奇怪问题(待解决)
程序员文章站
2022-06-01 21:32:46
...
JWT生成与解析遇到的奇怪问题(待解决)
创建JWT令牌时使用的**为 abcd
/**
* 创建Jwt令牌
*/
@Test
public void testCreateJwt() {
JwtBuilder builder = Jwts.builder()
.setId("123456")
.setSubject("明明")
.setIssuedAt(new Date())
.signWith(SignatureAlgorithm.HS256, "abcd");
System.out.println(builder.compact());
}
eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIxMjM0NTYiLCJzdWIiOiLmmI7mmI4iLCJpYXQiOjE2MDU4NzUwMzV9.994-0ORO0UNxGcpolrCbs8vrTJb7gVefuhbFEgYmYik
按道理我们解析上面的Token令牌时必须指定**为abcd才可解析令牌数据,否则报错;
但是神奇的是,使用abcd与1位0到9数字组成**解析令牌,竟然可以解析成功:
/**
* 解析Jwt令牌数据
*/
@Test
public void testParseJwt() {
String compactJwt = "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIxMjM0NTYiLCJzdWIiOiLmmI7mmI4iLCJpYXQiOjE2MDU4NzUwMzV9.994-0ORO0UNxGcpolrCbs8vrTJb7gVefuhbFEgYmYik";
Claims claims = Jwts.parser()
.setSigningKey("abcd1")
.parseClaimsJws(compactJwt)
.getBody();
System.out.println(claims);
}
上一篇: RPC的实现原理
推荐阅读