mirror of
https://github.com/didi/KnowStreaming.git
synced 2025-12-24 11:52:08 +08:00
LDAP认证忽略大小写,修正判断顺序,相同LDAP用户反复REPLACE
This commit is contained in:
@@ -48,22 +48,22 @@ public class BaseSessionSignOn extends AbstractSingleSignOn {
|
||||
if (ValidateUtils.isBlank(dto.getUsername()) || ValidateUtils.isNull(dto.getPassword())) {
|
||||
return Result.buildFailure("Missing parameters");
|
||||
}
|
||||
|
||||
Result<AccountDO> accountResult = accountService.getAccountDO(dto.getUsername());
|
||||
//先创建空对象,看是在LDAP去做填充,还是直接查表填充
|
||||
Result<AccountDO> accountResult;
|
||||
|
||||
//判断是否激活了LDAP验证, 若激活则也可使用ldap进行认证
|
||||
if(!ValidateUtils.isNull(accountLdapEnabled) && accountLdapEnabled){
|
||||
//去LDAP验证账密
|
||||
Map<String, Object> ldapAttrsInfo;
|
||||
ldapAttrsInfo = ldapAuthentication.authenticate(dto.getUsername(),dto.getPassword());
|
||||
Map<String, Object> 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());
|
||||
|
||||
Reference in New Issue
Block a user