支持Ldap登录认证

This commit is contained in:
zengqiao
2022-09-06 15:25:27 +08:00
parent 64f32d8b24
commit 7a3d15525c
5 changed files with 21 additions and 30 deletions

View File

@@ -7,13 +7,6 @@ import org.springframework.stereotype.Service;
@Data
@Service
public class KmAccountConfig {
/**
* LoginService的默认配置
*/
@Value(value = "${account.login.service.name:loginService}")
private String loginServiceName;
/**************************************************** Ldap 登录相关配置 ****************************************************/
@Value(value = "${account.ldap.url:}")

View File

@@ -1,5 +1,6 @@
package com.xiaojukeji.know.streaming.km.account.common.bizenum;
import com.didiglobal.logi.security.extend.LoginExtendBeanTool;
import lombok.Getter;
@Getter
@@ -10,9 +11,12 @@ public enum LoginServiceNameEnum {
;
public static final String DEFAULT_LOGIN_NAME = "loginService";
/**
* @see LoginExtendBeanTool.DEFAULT_BEAN_NAME
*/
public static final String DEFAULT_LOGIN_NAME = "logiSecurityDefaultLoginExtendImpl";
public static final String LDAP_LOGIN_NAME = "ldapLoginService";
public static final String LDAP_LOGIN_NAME = "ksLdapLoginService";
private final String name;

View File

@@ -7,7 +7,7 @@ import com.didiglobal.logi.security.common.entity.user.User;
import com.didiglobal.logi.security.common.enums.ResultCode;
import com.didiglobal.logi.security.common.vo.user.UserBriefVO;
import com.didiglobal.logi.security.exception.LogiSecurityException;
import com.didiglobal.logi.security.service.LoginService;
import com.didiglobal.logi.security.extend.LoginExtend;
import com.didiglobal.logi.security.service.UserService;
import com.didiglobal.logi.security.util.AESUtils;
import com.didiglobal.logi.security.util.CopyBeanUtil;
@@ -39,8 +39,8 @@ import static com.didiglobal.logi.security.util.HttpRequestUtil.COOKIE_OR_SESSIO
* @author Hu.Yue
* @date 2021/8/4
*/
//@Service(LoginServiceNameEnum.LDAP_LOGIN_NAME)
public class LdapLoginServiceImpl implements LoginService {
@Service(LoginServiceNameEnum.LDAP_LOGIN_NAME)
public class LdapLoginServiceImpl implements LoginExtend {
private static final Logger LOGGER = LoggerFactory.getLogger(LdapLoginServiceImpl.class);
@Autowired
@@ -89,8 +89,17 @@ public class LdapLoginServiceImpl implements LoginService {
@Override
public Result<Boolean> logout(HttpServletRequest request, HttpServletResponse response){
// 清理session
request.getSession().invalidate();
response.setStatus(REDIRECT_CODE);
// 清理cookies
for (Cookie cookie: request.getCookies()) {
cookie.setMaxAge(0);
cookie.setPath("/");
response.addCookie(cookie);
}
return Result.buildSucc(Boolean.TRUE);
}

View File

@@ -4,10 +4,7 @@ import com.didiglobal.logi.log.ILog;
import com.didiglobal.logi.log.LogFactory;
import com.didiglobal.logi.security.common.constant.Constants;
import com.didiglobal.logi.security.service.LoginService;
import com.xiaojukeji.know.streaming.km.account.KmAccountConfig;
import com.xiaojukeji.know.streaming.km.account.common.bizenum.LoginServiceNameEnum;
import com.xiaojukeji.know.streaming.km.account.login.trick.TrickJumpLoginService;
import com.xiaojukeji.know.streaming.km.common.component.HandleFactory;
import com.xiaojukeji.know.streaming.km.common.constant.ApiPrefix;
import com.xiaojukeji.know.streaming.km.common.constant.Constant;
import org.springframework.beans.factory.annotation.Autowired;
@@ -36,10 +33,7 @@ public class PermissionInterceptor implements HandlerInterceptor {
private static final String OPEN_URL_PREFIX = ApiPrefix.API_V3_OPEN_PREFIX;
@Autowired
private HandleFactory handleFactory;
@Autowired
private KmAccountConfig kmAccountConfig;
private LoginService loginService;
@Autowired
private TrickJumpLoginService trickJumpLoginService;
@@ -77,21 +71,11 @@ public class PermissionInterceptor implements HandlerInterceptor {
whiteMappingValues.add(LOGIN_URL);
whiteMappingValues.add(OPEN_URL_PREFIX);
return this.getLoginService().interceptorCheck(request, response, classRequestMappingValue, whiteMappingValues);
return loginService.interceptorCheck(request, response, classRequestMappingValue, whiteMappingValues);
}
/**************************************************** private method ****************************************************/
private LoginService getLoginService() {
LoginService loginService = handleFactory.getByClassNamePer(kmAccountConfig.getLoginServiceName(), LoginService.class);
if (loginService == null) {
LOGGER.error("method=getLoginService||specifiedLoginServiceName={}||msg=specified login service not exist and use default", kmAccountConfig.getLoginServiceName());
return handleFactory.getByClassNamePer(LoginServiceNameEnum.DEFAULT_LOGIN_NAME, LoginService.class);
}
return loginService;
}
/**
* 通过反射获取带有@RequestMapping的Controller
* @param handler 请求处理器

View File

@@ -41,6 +41,7 @@ spring:
driver-class-name: org.mariadb.jdbc.Driver
app-name: know-streaming
resource-extend-bean-name: myResourceExtendImpl
login-extend-bean-name: logiSecurityDefaultLoginExtendImpl
logging:
config: classpath:logback-spring.xml