支持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 @Data
@Service @Service
public class KmAccountConfig { public class KmAccountConfig {
/**
* LoginService的默认配置
*/
@Value(value = "${account.login.service.name:loginService}")
private String loginServiceName;
/**************************************************** Ldap 登录相关配置 ****************************************************/ /**************************************************** Ldap 登录相关配置 ****************************************************/
@Value(value = "${account.ldap.url:}") @Value(value = "${account.ldap.url:}")

View File

@@ -1,5 +1,6 @@
package com.xiaojukeji.know.streaming.km.account.common.bizenum; package com.xiaojukeji.know.streaming.km.account.common.bizenum;
import com.didiglobal.logi.security.extend.LoginExtendBeanTool;
import lombok.Getter; import lombok.Getter;
@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; 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.enums.ResultCode;
import com.didiglobal.logi.security.common.vo.user.UserBriefVO; import com.didiglobal.logi.security.common.vo.user.UserBriefVO;
import com.didiglobal.logi.security.exception.LogiSecurityException; 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.service.UserService;
import com.didiglobal.logi.security.util.AESUtils; import com.didiglobal.logi.security.util.AESUtils;
import com.didiglobal.logi.security.util.CopyBeanUtil; 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 * @author Hu.Yue
* @date 2021/8/4 * @date 2021/8/4
*/ */
//@Service(LoginServiceNameEnum.LDAP_LOGIN_NAME) @Service(LoginServiceNameEnum.LDAP_LOGIN_NAME)
public class LdapLoginServiceImpl implements LoginService { public class LdapLoginServiceImpl implements LoginExtend {
private static final Logger LOGGER = LoggerFactory.getLogger(LdapLoginServiceImpl.class); private static final Logger LOGGER = LoggerFactory.getLogger(LdapLoginServiceImpl.class);
@Autowired @Autowired
@@ -89,8 +89,17 @@ public class LdapLoginServiceImpl implements LoginService {
@Override @Override
public Result<Boolean> logout(HttpServletRequest request, HttpServletResponse response){ public Result<Boolean> logout(HttpServletRequest request, HttpServletResponse response){
// 清理session
request.getSession().invalidate(); request.getSession().invalidate();
response.setStatus(REDIRECT_CODE); response.setStatus(REDIRECT_CODE);
// 清理cookies
for (Cookie cookie: request.getCookies()) {
cookie.setMaxAge(0);
cookie.setPath("/");
response.addCookie(cookie);
}
return Result.buildSucc(Boolean.TRUE); 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.log.LogFactory;
import com.didiglobal.logi.security.common.constant.Constants; import com.didiglobal.logi.security.common.constant.Constants;
import com.didiglobal.logi.security.service.LoginService; 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.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.ApiPrefix;
import com.xiaojukeji.know.streaming.km.common.constant.Constant; import com.xiaojukeji.know.streaming.km.common.constant.Constant;
import org.springframework.beans.factory.annotation.Autowired; 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; private static final String OPEN_URL_PREFIX = ApiPrefix.API_V3_OPEN_PREFIX;
@Autowired @Autowired
private HandleFactory handleFactory; private LoginService loginService;
@Autowired
private KmAccountConfig kmAccountConfig;
@Autowired @Autowired
private TrickJumpLoginService trickJumpLoginService; private TrickJumpLoginService trickJumpLoginService;
@@ -77,21 +71,11 @@ public class PermissionInterceptor implements HandlerInterceptor {
whiteMappingValues.add(LOGIN_URL); whiteMappingValues.add(LOGIN_URL);
whiteMappingValues.add(OPEN_URL_PREFIX); whiteMappingValues.add(OPEN_URL_PREFIX);
return this.getLoginService().interceptorCheck(request, response, classRequestMappingValue, whiteMappingValues); return loginService.interceptorCheck(request, response, classRequestMappingValue, whiteMappingValues);
} }
/**************************************************** private method ****************************************************/ /**************************************************** 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 * 通过反射获取带有@RequestMapping的Controller
* @param handler 请求处理器 * @param handler 请求处理器

View File

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