【发布时间】:2020-02-18 08:50:15
【问题描述】:
我使用 java keystore 公钥和 io.jsonwebtoken 库创建了一个 jwt 令牌。 生成后,我将生成的令牌复制粘贴到https://jwt.io 网站。它在不使用私钥的情况下解码了我的令牌。这怎么可能?
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
PrivateKey privateKey = pair.getPrivate();
Claims claims = Jwts.claims().setSubject(userName);
claims.put("scopes", scopes);
String token = Jwts.builder()
.setClaims(claims)
.signWith(SignatureAlgorithm.RS256, privateKey)
.compact();
【问题讨论】:
-
签名 != 加密
-
jwt 有效负载是 base64 编码的。您的私钥用于签署 jwt。
-
@All: 那么如何加密 jwt 令牌呢? jwt lib提供了什么机制?
-
如果你真的需要加密,请查看 JWE(加密的 JWT):tools.ietf.org/html/rfc7516