This is an automated email from the ASF dual-hosted git repository.

gongzhongqiang pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/streampark.git


The following commit(s) were added to refs/heads/dev by this push:
     new 2233b18d4 [Improve] Improve login authentication (#4273)
2233b18d4 is described below

commit 2233b18d47dd2f91441562560769467969b4f6a0
Author: benjobs <[email protected]>
AuthorDate: Tue Aug 5 00:15:00 2025 +0800

    [Improve] Improve login authentication (#4273)
    
    * [CVE] CVE-2025-53960 fixed
---
 .github/workflows/backend.yml                      |   2 +-
 .github/workflows/docs.yml                         |   2 +-
 .github/workflows/e2e.yml                          |   2 +-
 .github/workflows/frontend.yml                     |   2 +-
 .github/workflows/unit-test.yml                    |   2 +-
 .../src/main/assembly/bin/streampark.sh            |   4 +-
 .../console/base/util/BashJavaUtils.java           |   1 +
 .../console/system/authentication/JWTFilter.java   |   4 +-
 .../console/system/authentication/JWTSecret.java   | 123 ++++++++++++++++++
 .../console/system/authentication/JWTUtil.java     | 139 ++++++++++++++-------
 .../console/system/authentication/ShiroRealm.java  |  17 ++-
 .../console/base/util/EncryptUtilsTest.java        |   6 +-
 .../core/service/AccessTokenServiceTest.java       |   5 +-
 .../console/system/authentication/JWTTest.java     |   3 +-
 14 files changed, 243 insertions(+), 69 deletions(-)

diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml
index 8ea6222e7..543500d7a 100644
--- a/.github/workflows/backend.yml
+++ b/.github/workflows/backend.yml
@@ -43,7 +43,7 @@ jobs:
       not-ignore: ${{ steps.filter.outputs.not-ignore }}
     steps:
       - uses: actions/checkout@v4
-      - uses: dorny/[email protected]
+      - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36
         id: filter
         with:
           filters: |
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index 225181d3c..f64d7e7ee 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -43,7 +43,7 @@ jobs:
       not-ignore: ${{ steps.filter.outputs.not-ignore }}
     steps:
       - uses: actions/checkout@v4
-      - uses: dorny/[email protected]
+      - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36
         id: filter
         with:
           filters: |
diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml
index 4582dafc0..3da664d98 100644
--- a/.github/workflows/e2e.yml
+++ b/.github/workflows/e2e.yml
@@ -38,7 +38,7 @@ jobs:
       not-ignore: ${{ steps.filter.outputs.not-ignore }}
     steps:
       - uses: actions/checkout@v4
-      - uses: dorny/[email protected]
+      - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36
         id: filter
         with:
           filters: |
diff --git a/.github/workflows/frontend.yml b/.github/workflows/frontend.yml
index 869161831..ce01c69e5 100644
--- a/.github/workflows/frontend.yml
+++ b/.github/workflows/frontend.yml
@@ -38,7 +38,7 @@ jobs:
       not-ignore: ${{ steps.filter.outputs.not-ignore }}
     steps:
       - uses: actions/checkout@v4
-      - uses: dorny/[email protected]
+      - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36
         id: filter
         with:
           filters: |
diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml
index 3359cde54..ee604d4f0 100644
--- a/.github/workflows/unit-test.yml
+++ b/.github/workflows/unit-test.yml
@@ -43,7 +43,7 @@ jobs:
       not-ignore: ${{ steps.filter.outputs.not-ignore }}
     steps:
       - uses: actions/checkout@v4
-      - uses: dorny/[email protected]
+      - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36
         id: filter
         with:
           filters: |
diff --git 
a/streampark-console/streampark-console-service/src/main/assembly/bin/streampark.sh
 
b/streampark-console/streampark-console-service/src/main/assembly/bin/streampark.sh
index 5045c7892..4d9ec7caa 100755
--- 
a/streampark-console/streampark-console-service/src/main/assembly/bin/streampark.sh
+++ 
b/streampark-console/streampark-console-service/src/main/assembly/bin/streampark.sh
@@ -360,7 +360,7 @@ start() {
   fi
 
   if [[ "${HADOOP_HOME}"x == ""x ]]; then
-    echo_y "WARN: HADOOP_HOME is undefined on your system env,please check it."
+    echo_y "WARN: HADOOP_HOME is undefined on your system env, please check 
it."
   else
     echo_w "Using HADOOP_HOME:   ${HADOOP_HOME}"
   fi
@@ -426,7 +426,7 @@ start_docker() {
   fi
 
   if [[ "${HADOOP_HOME}"x == ""x ]]; then
-    echo_y "WARN: HADOOP_HOME is undefined on your system env,please check it."
+    echo_y "WARN: HADOOP_HOME is undefined on your system env, please check 
it."
   else
     echo_w "Using HADOOP_HOME:   ${HADOOP_HOME}"
   fi
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/util/BashJavaUtils.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/util/BashJavaUtils.java
index b1189c290..adc87f2dd 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/util/BashJavaUtils.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/util/BashJavaUtils.java
@@ -129,4 +129,5 @@ public class BashJavaUtils {
                 break;
         }
     }
+
 }
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/JWTFilter.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/JWTFilter.java
index d7e81e573..cebfaa0cf 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/JWTFilter.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/JWTFilter.java
@@ -17,8 +17,6 @@
 
 package org.apache.streampark.console.system.authentication;
 
-import org.apache.streampark.console.base.util.EncryptUtils;
-
 import org.apache.shiro.authz.UnauthorizedException;
 import org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter;
 
@@ -58,7 +56,7 @@ public class JWTFilter extends BasicHttpAuthenticationFilter {
         HttpServletRequest httpServletRequest = (HttpServletRequest) request;
         String token = httpServletRequest.getHeader(TOKEN);
         try {
-            token = EncryptUtils.decrypt(token);
+            token = JWTUtil.decrypt(token);
             JWTToken jwtToken = new JWTToken(token);
             getSubject(request, response).login(jwtToken);
             return true;
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/JWTSecret.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/JWTSecret.java
new file mode 100644
index 000000000..bb8fb7309
--- /dev/null
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/JWTSecret.java
@@ -0,0 +1,123 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.streampark.console.system.authentication;
+
+import org.apache.streampark.common.util.FileUtils;
+
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
+import java.nio.file.attribute.PosixFilePermissions;
+import java.security.SecureRandom;
+import java.util.Base64;
+
+@Slf4j
+public class JWTSecret {
+
+    private static final int KEY_LENGTH = 32;
+
+    public static byte[] getJWTSecret() {
+        Path keyPath = Paths.get(System.getProperty("user.home"), 
"streampark.jwt.key");
+        File keyFile = keyPath.toFile();
+
+        // Try to load existing key
+        byte[] keyBytes = loadExistingKey(keyFile);
+        if (keyBytes != null) {
+            return keyBytes;
+        }
+
+        // Generate new key
+        keyBytes = generateNewKey();
+        saveNewKey(keyBytes, keyPath);
+        return keyBytes;
+    }
+
+    private static byte[] loadExistingKey(File keyFile) {
+        if (!keyFile.exists()) {
+            return null;
+        }
+
+        try {
+            String secret = FileUtils.readFile(keyFile).trim();
+            byte[] keyBytes = Base64.getDecoder().decode(secret);
+
+            if (keyBytes.length != KEY_LENGTH) {
+                log.error("Invalid HMAC key length: {} bytes (expected {} 
bytes)", keyBytes.length, KEY_LENGTH);
+                return null;
+            }
+            return keyBytes;
+        } catch (Exception e) {
+            log.error("Failed to read JWT key file", e);
+        }
+        // Clean up invalid file
+        safelyDeleteFile(keyFile);
+        return null;
+    }
+
+    private static byte[] generateNewKey() {
+        byte[] key = new byte[KEY_LENGTH];
+        new SecureRandom().nextBytes(key);
+        return key;
+    }
+
+    private static void saveNewKey(byte[] keyBytes, Path keyPath) {
+        String encodedKey = Base64.getEncoder().encodeToString(keyBytes);
+        try {
+            // Ensure the directory exists
+            Files.createDirectories(keyPath.getParent());
+            // Safely write to a temporary file before renaming
+            Path tempFile = Files.createTempFile(keyPath.getParent(), 
"streampark", ".tmp");
+            Files.write(tempFile, encodedKey.getBytes(StandardCharsets.UTF_8));
+
+            // Atomically move after setting permissions
+            setStrictPermissions(tempFile);
+            Files.move(tempFile, keyPath, StandardCopyOption.ATOMIC_MOVE, 
StandardCopyOption.REPLACE_EXISTING);
+
+        } catch (Exception e) {
+            throw new SecurityException("Failed to generate JWT key", e);
+        }
+    }
+
+    private static void setStrictPermissions(Path path) {
+        try {
+            Files.setPosixFilePermissions(path,
+                PosixFilePermissions.fromString("rw-------"));
+        } catch (UnsupportedOperationException e) {
+            log.warn("POSIX permissions not supported for {}", path);
+        } catch (IOException e) {
+            log.error("Failed to set permissions for {}", path, e);
+        }
+    }
+
+    private static void safelyDeleteFile(File keyFile) {
+        try {
+            if (keyFile.exists() && !keyFile.delete()) {
+                log.warn("Failed to delete invalid key file: {}", 
keyFile.getAbsolutePath());
+            }
+        } catch (SecurityException e) {
+            log.error("Security exception when deleting key file", e);
+        }
+    }
+
+}
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/JWTUtil.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/JWTUtil.java
index f51c276f3..ac87684ae 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/JWTUtil.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/JWTUtil.java
@@ -17,7 +17,6 @@
 
 package org.apache.streampark.console.system.authentication;
 
-import org.apache.streampark.console.base.util.EncryptUtils;
 import org.apache.streampark.console.core.enums.AuthenticationType;
 import org.apache.streampark.console.system.entity.User;
 
@@ -28,6 +27,14 @@ import com.auth0.jwt.algorithms.Algorithm;
 import com.auth0.jwt.interfaces.DecodedJWT;
 import lombok.extern.slf4j.Slf4j;
 
+import javax.crypto.Cipher;
+import javax.crypto.spec.GCMParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+
+import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
+import java.security.SecureRandom;
+import java.util.Base64;
 import java.util.Date;
 import java.util.regex.Pattern;
 
@@ -36,45 +43,25 @@ public class JWTUtil {
 
     private static Long ttlOfSecond;
 
+    private static final String ALGORITHM = "AES/GCM/NoPadding";
+    private static final int GCM_TAG_LENGTH = 128;
+    private static final int GCM_IV_LENGTH = 12;
     private static final String JWT_USERID = "userId";
     private static final String JWT_USERNAME = "userName";
     private static final String JWT_TYPE = "type";
     private static final String JWT_TIMESTAMP = "timestamp";
 
-    /**
-     * verify token
-     *
-     * @param token token
-     * @return is valid token
-     */
-    public static boolean verify(String token, String username, String secret) 
{
-        try {
-            Algorithm algorithm = Algorithm.HMAC256(secret);
-            JWTVerifier verifier = 
JWT.require(algorithm).withClaim(JWT_USERNAME, username).build();
-            verifier.verify(token);
-            return true;
-        } catch (Exception ignored) {
-            return false;
-        }
-    }
+    private static byte[] JWT_KEY = JWTSecret.getJWTSecret(); // Used for 
HMAC256
 
     /** get username from token */
     public static String getUserName(String token) {
-        try {
-            DecodedJWT jwt = JWT.decode(token);
-            return jwt.getClaim(JWT_USERNAME).asString();
-        } catch (Exception ignored) {
-            return null;
-        }
+        DecodedJWT jwt = decode(token);
+        return jwt != null ? jwt.getClaim(JWT_USERNAME).asString() : null;
     }
 
     public static Long getUserId(String token) {
-        try {
-            DecodedJWT jwt = JWT.decode(token);
-            return jwt.getClaim(JWT_USERID).asLong();
-        } catch (Exception ignored) {
-            return null;
-        }
+        DecodedJWT jwt = decode(token);
+        return jwt != null ? jwt.getClaim(JWT_USERID).asLong() : null;
     }
 
     /**
@@ -82,12 +69,8 @@ public class JWTUtil {
      * @return
      */
     public static Long getTimestamp(String token) {
-        try {
-            DecodedJWT jwt = JWT.decode(token);
-            return jwt.getClaim(JWT_TIMESTAMP).asLong();
-        } catch (Exception ignored) {
-            return 0L;
-        }
+        DecodedJWT jwt = decode(token);
+        return jwt != null ? jwt.getClaim(JWT_TIMESTAMP).asLong() : 0L;
     }
 
     /**
@@ -95,13 +78,12 @@ public class JWTUtil {
      * @return
      */
     public static AuthenticationType getAuthType(String token) {
-        try {
-            DecodedJWT jwt = JWT.decode(token);
-            int type = jwt.getClaim(JWT_TYPE).asInt();
-            return AuthenticationType.of(type);
-        } catch (Exception ignored) {
+        DecodedJWT jwt = decode(token);
+        if (jwt == null) {
             return null;
         }
+        int type = jwt.getClaim(JWT_TYPE).asInt();
+        return AuthenticationType.of(type);
     }
 
     /**
@@ -125,7 +107,7 @@ public class JWTUtil {
      */
     public static String sign(User user, AuthenticationType authType, Long 
expireTime) throws Exception {
         Date date = new Date(expireTime);
-        Algorithm algorithm = Algorithm.HMAC256(user.getPassword());
+        Algorithm algorithm = Algorithm.HMAC256(JWT_KEY);
 
         JWTCreator.Builder builder =
             JWT.create()
@@ -139,7 +121,7 @@ public class JWTUtil {
         }
 
         String token = builder.sign(algorithm);
-        return EncryptUtils.encrypt(token);
+        return encrypt(token);
     }
 
     public static Long getTTLOfSecond() {
@@ -167,4 +149,77 @@ public class JWTUtil {
         }
         return ttlOfSecond;
     }
+
+    private static DecodedJWT decode(String token) {
+        try {
+            Algorithm algorithm = Algorithm.HMAC256(JWT_KEY);
+            JWTVerifier verifier = JWT.require(algorithm).build();
+            return verifier.verify(token);
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+    public static boolean verify(String token) {
+        try {
+            // Decode the signing key using Base64
+            Algorithm algorithm = Algorithm.HMAC256(JWT_KEY);
+            JWTVerifier verifier = JWT.require(algorithm).build();
+            verifier.verify(token);
+            return true;
+        } catch (Exception e) {
+            log.warn("Invalid JWT: {}", e.getMessage());
+            return false;
+        }
+    }
+
+    /**
+     * Encrypts the given content using AES-GCM with a randomly generated IV.
+     * The IV is prepended to the ciphertext and the result is Base64-encoded.
+     * This allows the decrypt method to extract the IV and correctly decrypt 
the content.
+     *
+     * @param content the plaintext string to encrypt
+     * @return the Base64-encoded string containing the IV and ciphertext
+     * @throws Exception if encryption fails
+     */
+    public static String encrypt(String content) throws Exception {
+        // Generate a random IV
+        byte[] iv = new byte[GCM_IV_LENGTH];
+        SecureRandom.getInstanceStrong().nextBytes(iv);
+
+        SecretKeySpec keySpec = new SecretKeySpec(JWT_KEY, "AES");
+
+        // Initialize the cipher
+        Cipher cipher = Cipher.getInstance(ALGORITHM);
+        cipher.init(Cipher.ENCRYPT_MODE, keySpec, new 
GCMParameterSpec(GCM_TAG_LENGTH, iv));
+
+        // Encrypt data
+        byte[] encrypted = 
cipher.doFinal(content.getBytes(StandardCharsets.UTF_8));
+
+        // Combine IV and ciphertext
+        ByteBuffer buffer = ByteBuffer.allocate(iv.length + encrypted.length);
+        buffer.put(iv);
+        buffer.put(encrypted);
+
+        return Base64.getEncoder().encodeToString(buffer.array());
+    }
+
+    public static String decrypt(String content) throws Exception {
+        byte[] data = Base64.getDecoder().decode(content);
+        ByteBuffer buffer = ByteBuffer.wrap(data);
+
+        byte[] iv = new byte[GCM_IV_LENGTH];
+        buffer.get(iv);
+        byte[] encrypted = new byte[buffer.remaining()];
+        buffer.get(encrypted);
+
+        SecretKeySpec keySpec = new SecretKeySpec(JWT_KEY, "AES");
+
+        Cipher cipher = Cipher.getInstance(ALGORITHM);
+        GCMParameterSpec spec = new GCMParameterSpec(GCM_TAG_LENGTH, iv);
+        cipher.init(Cipher.DECRYPT_MODE, keySpec, spec);
+
+        return new String(cipher.doFinal(encrypted), StandardCharsets.UTF_8);
+    }
+
 }
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/ShiroRealm.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/ShiroRealm.java
index 6ea9d88a4..6c65334d4 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/ShiroRealm.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/ShiroRealm.java
@@ -18,7 +18,6 @@
 package org.apache.streampark.console.system.authentication;
 
 import org.apache.streampark.common.util.SystemPropertyUtils;
-import org.apache.streampark.console.base.util.EncryptUtils;
 import org.apache.streampark.console.core.enums.AuthenticationType;
 import org.apache.streampark.console.system.entity.AccessToken;
 import org.apache.streampark.console.system.entity.User;
@@ -90,6 +89,12 @@ public class ShiroRealm extends AuthorizingRealm {
             throw new AuthenticationException("the authorization token is 
invalid");
         }
 
+        // Query user information by username
+        User user = userService.getByUsername(username);
+        if (user == null || !user.getUserId().equals(userId)) {
+            throw new AuthenticationException("the authorization token 
verification failed.");
+        }
+
         switch (authType) {
             case SIGN:
                 Long timestamp = JWTUtil.getTimestamp(credential);
@@ -102,7 +107,7 @@ public class ShiroRealm extends AuthorizingRealm {
                 // Check whether the token belongs to the api and whether the 
permission is valid
                 AccessToken accessToken = 
accessTokenService.getByUserId(userId);
                 try {
-                    String encryptToken = EncryptUtils.encrypt(credential);
+                    String encryptToken = JWTUtil.encrypt(credential);
                     if (accessToken == null || 
!accessToken.getToken().equals(encryptToken)) {
                         throw new AuthenticationException("the openapi 
authorization token is invalid");
                     }
@@ -112,7 +117,7 @@ public class ShiroRealm extends AuthorizingRealm {
 
                 if 
(AccessToken.STATUS_DISABLE.equals(accessToken.getStatus())) {
                     throw new AuthenticationException(
-                        "the openapi authorization token is disabled, please 
contact the administrator");
+                        "The OpenAPI authorization token is disabled. Please 
contact the administrator.");
                 }
 
                 if (User.STATUS_LOCK.equals(accessToken.getUserStatus())) {
@@ -125,12 +130,6 @@ public class ShiroRealm extends AuthorizingRealm {
                 break;
         }
 
-        // Query user information by username
-        User user = userService.getByUsername(username);
-        if (user == null || !JWTUtil.verify(credential, username, 
user.getPassword())) {
-            throw new AuthenticationException("the authorization token 
verification failed.");
-        }
-
         return new SimpleAuthenticationInfo(credential, credential, 
"streampark_shiro_realm");
     }
 }
diff --git 
a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/base/util/EncryptUtilsTest.java
 
b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/base/util/EncryptUtilsTest.java
index 6563b94e3..692afc069 100644
--- 
a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/base/util/EncryptUtilsTest.java
+++ 
b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/base/util/EncryptUtilsTest.java
@@ -17,7 +17,7 @@
 
 package org.apache.streampark.console.base.util;
 
-import org.apache.streampark.common.constants.Constants;
+import org.apache.streampark.console.system.authentication.JWTUtil;
 
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
@@ -27,8 +27,8 @@ class EncryptUtilsTest {
     @Test
     void testEncrypt() throws Exception {
         String value = "apache streampark";
-        String encrypt = EncryptUtils.encrypt(value, Constants.STREAM_PARK);
-        String decrypt = EncryptUtils.decrypt(encrypt, Constants.STREAM_PARK);
+        String encrypt = JWTUtil.encrypt(value);
+        String decrypt = JWTUtil.decrypt(encrypt);
         Assertions.assertEquals(value, decrypt);
     }
 }
diff --git 
a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/AccessTokenServiceTest.java
 
b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/AccessTokenServiceTest.java
index c5de0d6a2..ad802924d 100644
--- 
a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/AccessTokenServiceTest.java
+++ 
b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/AccessTokenServiceTest.java
@@ -20,7 +20,6 @@ package org.apache.streampark.console.core.service;
 import org.apache.streampark.console.SpringUnitTestBase;
 import org.apache.streampark.console.base.domain.RestRequest;
 import org.apache.streampark.console.base.domain.RestResponse;
-import org.apache.streampark.console.base.util.EncryptUtils;
 import org.apache.streampark.console.system.authentication.JWTToken;
 import org.apache.streampark.console.system.authentication.JWTUtil;
 import org.apache.streampark.console.system.entity.AccessToken;
@@ -51,14 +50,14 @@ public class AccessTokenServiceTest extends 
SpringUnitTestBase {
         // verify
         AccessToken accessToken = (AccessToken) restResponse.get("data");
         LOG.info(accessToken.getToken());
-        JWTToken jwtToken = new 
JWTToken(EncryptUtils.decrypt(accessToken.getToken()));
+        JWTToken jwtToken = new 
JWTToken(JWTUtil.decrypt(accessToken.getToken()));
         LOG.info(jwtToken.getToken());
         String username = JWTUtil.getUserName(jwtToken.getToken());
         Assertions.assertNotNull(username);
         Assertions.assertEquals("admin", username);
         User user = userService.getByUsername(username);
         Assertions.assertNotNull(user);
-        Assertions.assertTrue(JWTUtil.verify(jwtToken.getToken(), username, 
user.getPassword()));
+        Assertions.assertTrue(JWTUtil.verify(jwtToken.getToken()));
 
         // list
         AccessToken mockToken1 = new AccessToken();
diff --git 
a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/system/authentication/JWTTest.java
 
b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/system/authentication/JWTTest.java
index ff3ea0bb1..66c67d92b 100644
--- 
a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/system/authentication/JWTTest.java
+++ 
b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/system/authentication/JWTTest.java
@@ -19,7 +19,6 @@ package org.apache.streampark.console.system.authentication;
 
 import org.apache.streampark.common.util.DateUtils;
 import org.apache.streampark.console.SpringUnitTestBase;
-import org.apache.streampark.console.base.util.EncryptUtils;
 import org.apache.streampark.console.core.enums.AuthenticationType;
 import org.apache.streampark.console.system.entity.User;
 
@@ -47,7 +46,7 @@ class JWTTest extends SpringUnitTestBase {
                 AuthenticationType.SIGN,
                 DateUtils.getTime(ttl, DateUtils.fullFormat(), 
TimeZone.getDefault()));
         assert token != null;
-        Date expiresAt = 
JWT.decode(EncryptUtils.decrypt(token)).getExpiresAt();
+        Date expiresAt = JWT.decode(JWTUtil.decrypt(token)).getExpiresAt();
         String decodeExpireTime =
             DateUtils.format(expiresAt, DateUtils.fullFormat(), 
TimeZone.getDefault());
         Assertions.assertEquals(ttl, decodeExpireTime);

Reply via email to