You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streampark.apache.org by be...@apache.org on 2023/03/21 07:39:13 UTC

[incubator-streampark] branch dev updated: [bug][issue-2477] login failed when ldap password was changed (#2478)

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

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


The following commit(s) were added to refs/heads/dev by this push:
     new 67d0e7b41 [bug][issue-2477] login failed when ldap password was changed (#2478)
67d0e7b41 is described below

commit 67d0e7b41eff3a975664c305903bb4a9816e0523
Author: totoro <zh...@foxmail.com>
AuthorDate: Tue Mar 21 15:39:06 2023 +0800

    [bug][issue-2477] login failed when ldap password was changed (#2478)
    
    * [bug][issue-2477] login failed when ldap password was changed
    
    * [fix] make code concise
    
    ---------
    
    Co-authored-by: zhoulii <zh...@hikvision.com.cn>
---
 .../system/security/impl/AuthenticatorImpl.java       | 19 ++++++++++++++++++-
 .../console/system/service/UserService.java           |  2 ++
 .../console/system/service/impl/UserServiceImpl.java  | 14 +++++++++++---
 3 files changed, 31 insertions(+), 4 deletions(-)

diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/security/impl/AuthenticatorImpl.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/security/impl/AuthenticatorImpl.java
index e44ee7009..c3284975b 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/security/impl/AuthenticatorImpl.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/security/impl/AuthenticatorImpl.java
@@ -58,9 +58,26 @@ public class AuthenticatorImpl implements Authenticator {
     }
     // check if user exist
     User user = usersService.findByName(username);
-    if (user != null || !ldapService.createIfUserNotExists()) {
+
+    if (user != null) {
+      String saltPassword = ShaHashUtils.encrypt(user.getSalt(), password);
+
+      // ldap password changed, we should update user password
+      if (!StringUtils.equals(saltPassword, user.getPassword())) {
+
+        // encrypt password again
+        String salt = ShaHashUtils.getRandomSalt();
+        saltPassword = ShaHashUtils.encrypt(salt, password);
+        user.setSalt(salt);
+        user.setPassword(saltPassword);
+        usersService.updateSaltPassword(user);
+      }
       return user;
     }
+
+    if (!ldapService.createIfUserNotExists()) {
+      return null;
+    }
     User newUser = new User();
     newUser.setCreateTime(new Date());
     newUser.setUsername(username);
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/UserService.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/UserService.java
index de48c885b..4aa3fe927 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/UserService.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/UserService.java
@@ -100,6 +100,8 @@ public interface UserService extends IService<User> {
    */
   void updatePassword(User user) throws Exception;
 
+  void updateSaltPassword(User user) throws Exception;
+
   /**
    * reset password
    *
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/UserServiceImpl.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/UserServiceImpl.java
index ef95e0cb1..01c1365a8 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/UserServiceImpl.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/UserServiceImpl.java
@@ -150,9 +150,17 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     String password = ShaHashUtils.encrypt(salt, userParam.getPassword());
     user.setSalt(salt);
     user.setPassword(password);
-    LambdaQueryWrapper<User> queryWrapper =
-        new LambdaQueryWrapper<User>().eq(User::getUserId, user.getUserId());
-    this.baseMapper.update(user, queryWrapper);
+    this.baseMapper.updateById(user);
+  }
+
+  @Override
+  @Transactional(rollbackFor = Exception.class)
+  public void updateSaltPassword(User userParam) {
+    User user = getById(userParam.getUserId());
+    ApiAlertException.throwIfNull(user, "User is null. Update password failed.");
+    user.setSalt(userParam.getSalt());
+    user.setPassword(userParam.getPassword());
+    this.baseMapper.updateById(user);
   }
 
   @Override