繁体   English   中英

生成 JWT 令牌无效 - java

[英]Generate JWT token not valid - java

我创建了一个 JWT 令牌,如果我将 go 到官方网站https://jwt.io/并检查其有效性,则表明它无效。

请告诉我为什么结果证明它无效?

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJKYWNrIiwiaWF0IjoxNjYwMDY3NjQ0LCJleHAiOjE2NjAxNTQwNDR9.yUqKI1t2xKVlhALUw12ie3DcpnGyXelcd7J-0qJ1FPg

        public class GeneratorJwt {
            
            public static void main(String[] args)  {

                Map<String, Object> claims = new HashMap<>();

                SecretKey key = Keys.secretKeyFor(SignatureAlgorithm.HS256);

                String jwtTokenKey = Encoders.BASE64.encode(key.getEncoded());

                String s = Jwts.builder()
                        .setClaims(claims)
                        .setSubject("Jack")
                        .setIssuedAt(new Date(System.currentTimeMillis()))
                        .setExpiration(new Date((new Date()).getTime() + 86400000))
                        .signWith(SignatureAlgorithm.HS256, jwtTokenKey).compact();
                
                System.out.println(s);
            }
            
        }

您几乎可以肯定不应该使用 HS256,这是一种对称算法,这意味着您必须将密钥提供给客户端,以便他们能够验证 JWT。 有关此类指南,请参阅JWT 最佳实践文章。

从最主流的 RS256 令牌签名算法开始 - 这是我的一些 Java 代码,通过备受推崇的jose4j库使用它:

然后,您可以在 jwt.io 中粘贴令牌签名公钥 (JWK)以查看已验证的令牌。 如果您愿意,可以将相同的概念转换为您选择的不同 JWT 库。 另请参阅我的这篇博客文章,它使用 jwt.io 网站。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM