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

Blade 未结 3 566
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条回答
  • 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


    同步时间后即解决




    2 讨论(0)
  • 2024-09-25 09:36

    两个环境都连接到同一个nacos看看,然后线上的你多打印一个日志,把auth服务和system服务还有gateway服务的sign-key打印出来,看看是多少,看看是不是一样。再检查下服务器之间时间有没有同步。

    0 讨论(0)
  • 2024-10-12 11:45

    同样的问题 +1


    1. 登出系统后【请求未授权】无法登入:反复点5次以上后又可以成功登入

    2. 系统代码发版后【请求未授权】无法登入:无论如何登入不了,但重复发版后又可以恢复正常(代码一模一样)

    3. Gateway服务日志显示Token会传丢为空,但前端确定有传

    0 讨论(1)
提交回复