kubesphere 部署后登录返回401 JwttUtil.paresJWT(token) 返回为null

Blade 未结 3 829
gavin11
gavin11 2024-09-24 20:07

一、该问题的重现步骤是什么?

1. 将gateway、auth、system做成镜像 上传至kubesphere,配置nginx 上传至kubesphere

2. 打开前端登录页面 登录后返回请求未授权。 F12 发现/bladw-system/menu/top-menu 等接口返回401

3.本地同样的jar 和 nginx 没有此问题 ,排查后发现kubesphere上的gateway 中AuthFilter.java 中JwttUtil.paresJWT(token) 返回为null,而tocken是有值的

WechatIMG578.jpeg


二、你期待的结果是什么?实际看到的又是什么?

期待登录成功, 实际是报错401 返回到了登陆页

三、你正在使用的是什么产品,什么版本?在什么操作系统上?

bladex 4.1.0

四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

3条回答
  •  hervie
    hervie (楼主)
    2024-10-12 12:58

    遇到一样的问题,经过定位


    // 修改 Bladex-tool  JwtUtil.class
    
    public static Claims parseJWT(String jsonWebToken) {
        try {
           SecretKey secretKey = Keys.hmacShaKeyFor(Base64.getDecoder().decode(getBase64Security()));
           return Jwts.parser()
              .verifyWith(secretKey)
              .build()
              .parseSignedClaims(jsonWebToken)
              .getPayload();
        } catch (Exception ex) {
           ex.printStackTrace();
           return null;
        }
    }



    捕获异常,会提示

    early by 36622 milliseconds before 2024-10-12T04:34:32.000Z. Current time: 2024-10-12T04:33:55.378Z. Allowed clock skew: 0 milliseconds


    然后对比服务器时间发现不同步


    429b3b8e3d01de1b7b0ca8e2d141977.png


    同步时间后即解决




提交回复