diff --git a/kafka-manager-extends/kafka-manager-account/src/main/java/com/xiaojukeji/kafka/manager/account/component/sso/BaseSessionSignOn.java b/kafka-manager-extends/kafka-manager-account/src/main/java/com/xiaojukeji/kafka/manager/account/component/sso/BaseSessionSignOn.java index bb5f415c..c64a1717 100644 --- a/kafka-manager-extends/kafka-manager-account/src/main/java/com/xiaojukeji/kafka/manager/account/component/sso/BaseSessionSignOn.java +++ b/kafka-manager-extends/kafka-manager-account/src/main/java/com/xiaojukeji/kafka/manager/account/component/sso/BaseSessionSignOn.java @@ -48,22 +48,22 @@ public class BaseSessionSignOn extends AbstractSingleSignOn { if (ValidateUtils.isBlank(dto.getUsername()) || ValidateUtils.isNull(dto.getPassword())) { return Result.buildFailure("Missing parameters"); } - - Result accountResult = accountService.getAccountDO(dto.getUsername()); + //先创建空对象,看是在LDAP去做填充,还是直接查表填充 + Result accountResult; //判断是否激活了LDAP验证, 若激活则也可使用ldap进行认证 if(!ValidateUtils.isNull(accountLdapEnabled) && accountLdapEnabled){ //去LDAP验证账密 - Map ldapAttrsInfo; - ldapAttrsInfo = ldapAuthentication.authenticate(dto.getUsername(),dto.getPassword()); + Map ldapAttrsInfo = ldapAuthentication.authenticate(dto.getUsername(),dto.getPassword());; if(ValidateUtils.isNull(ldapAttrsInfo)){ return Result.buildFrom(ResultStatus.LDAP_AUTHENTICATION_FAILED); } + //LDAP验证通过,拿LDAP的sAMAccountName替换dto对象的值,便于第一次自动注册采用LDAP值,并且第二次也避免REPLACE + dto.setUsername(ldapAttrsInfo.get("sAMAccountName").toString()); + accountResult = accountService.getAccountDO(dto.getUsername()); if((ValidateUtils.isNull(accountResult) || ValidateUtils.isNull(accountResult.getData())) && authUserRegistration){ //自动注册 - //使用Ldap:sAMAccountName替换用户输入的值 - dto.setUsername(ldapAttrsInfo.get("sAMAccountName").toString()); AccountDO accountDO = new AccountDO(); accountDO.setUsername(dto.getUsername()); accountDO.setRole(AccountRoleEnum.getUserRoleEnum(authUserRegistrationRole).getRole()); @@ -73,6 +73,8 @@ public class BaseSessionSignOn extends AbstractSingleSignOn { return Result.buildSuc(dto.getUsername()); } + //不走LDAP认证直接查表填充 + accountResult = accountService.getAccountDO(dto.getUsername()); if (ValidateUtils.isNull(accountResult) || accountResult.failed()) { return new Result<>(accountResult.getCode(), accountResult.getMessage());