mirror of
https://github.com/didi/KnowStreaming.git
synced 2026-01-05 21:12:13 +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())) {
|
if (ValidateUtils.isBlank(dto.getUsername()) || ValidateUtils.isNull(dto.getPassword())) {
|
||||||
return Result.buildFailure("Missing parameters");
|
return Result.buildFailure("Missing parameters");
|
||||||
}
|
}
|
||||||
|
//先创建空对象,看是在LDAP去做填充,还是直接查表填充
|
||||||
Result<AccountDO> accountResult = accountService.getAccountDO(dto.getUsername());
|
Result<AccountDO> accountResult;
|
||||||
|
|
||||||
//判断是否激活了LDAP验证, 若激活则也可使用ldap进行认证
|
//判断是否激活了LDAP验证, 若激活则也可使用ldap进行认证
|
||||||
if(!ValidateUtils.isNull(accountLdapEnabled) && accountLdapEnabled){
|
if(!ValidateUtils.isNull(accountLdapEnabled) && accountLdapEnabled){
|
||||||
//去LDAP验证账密
|
//去LDAP验证账密
|
||||||
Map<String, Object> ldapAttrsInfo;
|
Map<String, Object> ldapAttrsInfo = ldapAuthentication.authenticate(dto.getUsername(),dto.getPassword());;
|
||||||
ldapAttrsInfo = ldapAuthentication.authenticate(dto.getUsername(),dto.getPassword());
|
|
||||||
if(ValidateUtils.isNull(ldapAttrsInfo)){
|
if(ValidateUtils.isNull(ldapAttrsInfo)){
|
||||||
return Result.buildFrom(ResultStatus.LDAP_AUTHENTICATION_FAILED);
|
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){
|
if((ValidateUtils.isNull(accountResult) || ValidateUtils.isNull(accountResult.getData())) && authUserRegistration){
|
||||||
//自动注册
|
//自动注册
|
||||||
//使用Ldap:sAMAccountName替换用户输入的值
|
|
||||||
dto.setUsername(ldapAttrsInfo.get("sAMAccountName").toString());
|
|
||||||
AccountDO accountDO = new AccountDO();
|
AccountDO accountDO = new AccountDO();
|
||||||
accountDO.setUsername(dto.getUsername());
|
accountDO.setUsername(dto.getUsername());
|
||||||
accountDO.setRole(AccountRoleEnum.getUserRoleEnum(authUserRegistrationRole).getRole());
|
accountDO.setRole(AccountRoleEnum.getUserRoleEnum(authUserRegistrationRole).getRole());
|
||||||
@@ -73,6 +73,8 @@ public class BaseSessionSignOn extends AbstractSingleSignOn {
|
|||||||
|
|
||||||
return Result.buildSuc(dto.getUsername());
|
return Result.buildSuc(dto.getUsername());
|
||||||
}
|
}
|
||||||
|
//不走LDAP认证直接查表填充
|
||||||
|
accountResult = accountService.getAccountDO(dto.getUsername());
|
||||||
|
|
||||||
if (ValidateUtils.isNull(accountResult) || accountResult.failed()) {
|
if (ValidateUtils.isNull(accountResult) || accountResult.failed()) {
|
||||||
return new Result<>(accountResult.getCode(), accountResult.getMessage());
|
return new Result<>(accountResult.getCode(), accountResult.getMessage());
|
||||||
|
|||||||
Reference in New Issue
Block a user