V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shayang888
V2EX  ›  Java

有没有用过 auth0-jwt 的,发现一个很奇怪的问题,麻烦大佬帮忙看下

  •  
  •   shayang888 · 2019-11-15 18:13:09 +08:00 · 5415 次点击
    这是一个创建于 1617 天前的主题,其中的信息可能已经有所发展或是发生改变。
    public class JwtUtil {
    
        private static Algorithm algorithm;
    
        static {
            try {
                algorithm = Algorithm.HMAC512(KeyGenerator.getInstance("HmacSHA512").generateKey().getEncoded());
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
        }
    
        public static String create(String username) {
            Date now = new Date();
            return JWT.create()
                    .withIssuedAt(now)
                    .withClaim("username", username)
                    .withExpiresAt(new Date(now.getTime() + 60000*60))
                    .sign(algorithm);
        }
    
        public static String verify(String token) {
            return JWT.require(algorithm).build()
                    .verify(token)
                    .getClaim("username")
                    .asString();
        }
    
    }
    

    上面是 jwt 的生成和验证的类

    public class TestToken {
    
        public static void main(String[] args) {
            String token = JwtUtil.create("123");
            System.out.println(token);
            System.out.println(JwtUtil.verify("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJleHAiOjE1NzM4MTU2MzYsImlhdCI6MTU3MzgxMjAzNiwidXNlcm5hbWUiOiIxMjMifQ.4xIgdDx44A_4vdebICw-FmzxMqw5R48OODJ7HPst4rEe-4k2ob1cKat2CKqw7VSTsKAEBl1abxv6EpBU5AhIwg"));
        }
    }
    

    问题:当我把获得的 token 手动填入到这个测试类里的时候,就是给我报一个错 com.auth0.jwt.exceptions.SignatureVerificationException: The Token's Signature resulted invalid when verified using the Algorithm: HmacSHA512,但是如果我直接写成JwtUtil.verify(token),一切就 ok,请问这是为什么?(手动填入的 token 是正确的,未过期的)

    shayang888
        1
    shayang888  
    OP
       2019-11-15 18:16:00 +08:00
    然后就是如果我把```Algorithm.HMAC512()```这里传入的 secret 改成固定的,那么以上的问题不会出现
    shayang888
        2
    shayang888  
    OP
       2019-11-15 18:31:01 +08:00
    有大佬帮忙看看吗 谢谢了 实在不知道哪有问题
    DavidWei
        3
    DavidWei  
       2019-11-15 18:40:06 +08:00
    algorithm = Algorithm.HMAC512(KeyGenerator.getInstance("HmacSHA512").generateKey().getEncoded());
    shayang888
        4
    shayang888  
    OP
       2019-11-15 18:50:33 +08:00 via Android
    @DavidWei 这有什么问题吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2403 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:06 · PVG 00:06 · LAX 09:06 · JFK 12:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.