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