InvalidClaimException: The Token can‘t be used before

项目场景:

服务分布式部署token验证出错


问题描述:

InvalidClaimException: The Token can't be used before ......

原因分析:

多台服务器情况下,时钟同步存在误差导致token时间超前。

获取token的服务器比使用token的服务器时钟快,请求分发到时间慢的服务器上导致时间还没到token的开始时间。


解决方案:

设置允许误差时间:

Algorithm algorithm = Algorithm.HMAC256(SECRET_KEY);
JWTVerifier verifier = JWT.require(algorithm).acceptLeeway(2).build();
verifier.verify(token);

源码:

JWTVerifier.java
 private void assertDateIsPast(Date date, long leeway, Date today) {
        today.setTime(today.getTime() + leeway * 1000L);
        if (date != null && today.before(date)) {
            throw new InvalidClaimException(String.format("The Token can't be used before %s.", date));
        }
    }


问题参考:issues

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值