mirror of
https://github.com/didi/KnowStreaming.git
synced 2025-12-24 11:52:08 +08:00
支持Ldap登录认证
This commit is contained in:
@@ -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:}")
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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 请求处理器
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user