diff --git a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/interceptor/AuthenticationInterceptor.java b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/interceptor/AuthenticationInterceptor.java index 4f95c6943..a395c2aac 100644 --- a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/interceptor/AuthenticationInterceptor.java +++ b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/interceptor/AuthenticationInterceptor.java @@ -1,20 +1,13 @@ package com.tencent.supersonic.auth.authentication.interceptor; import com.tencent.supersonic.auth.api.authentication.config.AuthenticationConfig; -import com.tencent.supersonic.auth.api.authentication.constant.UserConstants; import com.tencent.supersonic.auth.authentication.service.UserServiceImpl; import com.tencent.supersonic.auth.authentication.utils.TokenService; -import com.tencent.supersonic.common.util.S2ThreadContext; -import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; -import org.apache.catalina.connector.RequestFacade; import org.apache.commons.lang3.StringUtils; -import org.apache.tomcat.util.http.MimeHeaders; import org.springframework.util.CollectionUtils; -import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest; import org.springframework.web.servlet.HandlerInterceptor; -import java.lang.reflect.Field; import java.util.Arrays; import java.util.List; @@ -27,8 +20,6 @@ public abstract class AuthenticationInterceptor implements HandlerInterceptor { protected TokenService tokenService; - protected S2ThreadContext s2ThreadContext; - protected boolean isExcludedUri(String uri) { String excludePathStr = authenticationConfig.getExcludePath(); if (StringUtils.isEmpty(excludePathStr)) { @@ -53,52 +44,4 @@ public abstract class AuthenticationInterceptor implements HandlerInterceptor { return includePaths.stream().anyMatch(uri::startsWith); } - protected boolean isInternalRequest(HttpServletRequest request) { - String internal = request.getHeader(UserConstants.INTERNAL); - return "true".equalsIgnoreCase(internal); - } - - protected boolean isAppRequest(HttpServletRequest request) { - String appId = request.getHeader(authenticationConfig.getAppId()); - return StringUtils.isNotBlank(appId); - } - - protected void reflectSetParam(HttpServletRequest request, String key, String value) { - try { - if (request instanceof StandardMultipartHttpServletRequest) { - RequestFacade servletRequest = - (RequestFacade) ((StandardMultipartHttpServletRequest) request) - .getRequest(); - Class servletRequestClazz = servletRequest.getClass(); - Field request1 = servletRequestClazz.getDeclaredField("request"); - request1.setAccessible(true); - Object o = request1.get(servletRequest); - Field coyoteRequest = o.getClass().getDeclaredField("coyoteRequest"); - coyoteRequest.setAccessible(true); - Object o1 = coyoteRequest.get(o); - Field headers = o1.getClass().getDeclaredField("headers"); - headers.setAccessible(true); - MimeHeaders o2 = (MimeHeaders) headers.get(o1); - if (o2.getValue(key) != null) { - o2.setValue(key).setString(value); - } else { - o2.addValue(key).setString(value); - } - } else { - Class requestClass = request.getClass(); - Field request1 = requestClass.getDeclaredField("request"); - request1.setAccessible(true); - Object o = request1.get(request); - Field coyoteRequest = o.getClass().getDeclaredField("coyoteRequest"); - coyoteRequest.setAccessible(true); - Object o1 = coyoteRequest.get(o); - Field headers = o1.getClass().getDeclaredField("headers"); - headers.setAccessible(true); - MimeHeaders o2 = (MimeHeaders) headers.get(o1); - o2.addValue(key).setString(value); - } - } catch (Exception e) { - log.error("reflectSetParam error:", e); - } - } } diff --git a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/interceptor/DefaultAuthenticationInterceptor.java b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/interceptor/DefaultAuthenticationInterceptor.java index 033fe7a6a..47886aa94 100644 --- a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/interceptor/DefaultAuthenticationInterceptor.java +++ b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/interceptor/DefaultAuthenticationInterceptor.java @@ -5,11 +5,8 @@ import com.tencent.supersonic.auth.api.authentication.config.AuthenticationConfi import com.tencent.supersonic.auth.api.authentication.pojo.UserWithPassword; import com.tencent.supersonic.auth.authentication.service.UserServiceImpl; import com.tencent.supersonic.auth.authentication.utils.TokenService; -import com.tencent.supersonic.common.pojo.User; import com.tencent.supersonic.common.pojo.exception.AccessException; import com.tencent.supersonic.common.util.ContextUtils; -import com.tencent.supersonic.common.util.S2ThreadContext; -import com.tencent.supersonic.common.util.ThreadContext; import io.jsonwebtoken.Claims; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; @@ -35,19 +32,10 @@ public class DefaultAuthenticationInterceptor extends AuthenticationInterceptor authenticationConfig = ContextUtils.getBean(AuthenticationConfig.class); userServiceImpl = ContextUtils.getBean(UserServiceImpl.class); tokenService = ContextUtils.getBean(TokenService.class); - s2ThreadContext = ContextUtils.getBean(S2ThreadContext.class); if (!authenticationConfig.isEnabled()) { - setFakerUser(request); - return true; - } - if (isInternalRequest(request)) { - setFakerUser(request); - return true; - } - if (isAppRequest(request)) { - setFakerUser(request); return true; } + if (handler instanceof HandlerMethod) { HandlerMethod handlerMethod = (HandlerMethod) handler; Method method = handlerMethod.getMethod(); @@ -68,35 +56,11 @@ public class DefaultAuthenticationInterceptor extends AuthenticationInterceptor UserWithPassword user = getUserWithPassword(request); if (user != null) { - setContext(user.getName(), request); return true; } throw new AccessException("authentication failed, please login"); } - private void setFakerUser(HttpServletRequest request) { - String token = generateAdminToken(request); - reflectSetParam(request, authenticationConfig.getTokenHttpHeaderKey(), token); - setContext(User.getDefaultUser().getName(), request); - } - - private void setContext(String userName, HttpServletRequest request) { - ThreadContext threadContext = ThreadContext.builder() - .token(request.getHeader(authenticationConfig.getTokenHttpHeaderKey())) - .userName(userName).build(); - s2ThreadContext.set(threadContext); - } - - public String generateAdminToken(HttpServletRequest request) { - UserWithPassword admin = new UserWithPassword("admin"); - admin.setId(1L); - admin.setName("admin"); - admin.setPassword("c3VwZXJzb25pY0BiaWNvbdktJJYWw6A3rEmBUPzbn/6DNeYnD+y3mAwDKEMS3KVT"); - admin.setDisplayName("admin"); - admin.setIsAdmin(1); - return tokenService.generateToken(UserWithPassword.convert(admin), request); - } - public UserWithPassword getUserWithPassword(HttpServletRequest request) { final Optional claimsOptional = tokenService.getClaims(request); if (!claimsOptional.isPresent()) { diff --git a/common/src/main/java/com/tencent/supersonic/common/config/ThreadContextConfig.java b/common/src/main/java/com/tencent/supersonic/common/config/ThreadContextConfig.java deleted file mode 100644 index 978c4e51e..000000000 --- a/common/src/main/java/com/tencent/supersonic/common/config/ThreadContextConfig.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.tencent.supersonic.common.config; - -import com.tencent.supersonic.common.util.S2ThreadContext; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -@Configuration -public class ThreadContextConfig { - - @Bean - public S2ThreadContext s2ThreadContext() { - return new S2ThreadContext(); - } -} diff --git a/common/src/main/java/com/tencent/supersonic/common/util/S2ThreadContext.java b/common/src/main/java/com/tencent/supersonic/common/util/S2ThreadContext.java deleted file mode 100644 index 91db635a2..000000000 --- a/common/src/main/java/com/tencent/supersonic/common/util/S2ThreadContext.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.tencent.supersonic.common.util; - -import com.alibaba.ttl.TransmittableThreadLocal; - -public class S2ThreadContext { - - private static final TransmittableThreadLocal context = - new TransmittableThreadLocal<>(); - - public ThreadContext get() { - return context.get(); - } - - public void set(ThreadContext value) { - context.set(value); - } - - public void remove() { - context.remove(); - } -} diff --git a/common/src/main/java/com/tencent/supersonic/common/util/ThreadContext.java b/common/src/main/java/com/tencent/supersonic/common/util/ThreadContext.java index fc38dc4cc..e80eae485 100644 --- a/common/src/main/java/com/tencent/supersonic/common/util/ThreadContext.java +++ b/common/src/main/java/com/tencent/supersonic/common/util/ThreadContext.java @@ -1,5 +1,6 @@ package com.tencent.supersonic.common.util; +import com.tencent.supersonic.common.pojo.User; import lombok.Builder; import lombok.Data; import lombok.ToString; @@ -13,7 +14,7 @@ public class ThreadContext { private String traceId; - private String userName; + private User user; private String token; diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/DataSetDetail.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/DataSetDetail.java index 035c755e7..35ff5c7c0 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/DataSetDetail.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/DataSetDetail.java @@ -2,10 +2,12 @@ package com.tencent.supersonic.headless.api.pojo; import lombok.Data; +import java.util.Collections; import java.util.List; @Data public class DataSetDetail { - private List dataSetModelConfigs; + private List dataSetModelConfigs = Collections.emptyList(); + } diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/DataSetReq.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/DataSetReq.java index e3653df27..4023fa99e 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/DataSetReq.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/DataSetReq.java @@ -12,7 +12,7 @@ public class DataSetReq extends SchemaItem { private Long domainId; - private DataSetDetail dataSetDetail; + private DataSetDetail dataSetDetail = new DataSetDetail(); private String alias; diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/ModelServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/ModelServiceImpl.java index 0a5a66b4c..bf398fd73 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/ModelServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/ModelServiceImpl.java @@ -627,7 +627,7 @@ public class ModelServiceImpl implements ModelService { private DataItem getDataItem(ModelDO modelDO) { return DataItem.builder().id(modelDO.getId().toString()).name(modelDO.getName()) .bizName(modelDO.getBizName()).modelId(modelDO.getId().toString()) - .domainId(modelDO.getDomainId().toString()).type(TypeEnums.DIMENSION).build(); + .domainId(modelDO.getDomainId().toString()).type(TypeEnums.MODEL).build(); } } diff --git a/launchers/standalone/src/main/resources/s2-config.yaml b/launchers/standalone/src/main/resources/s2-config.yaml index 30f09c953..fb81d4bd8 100644 --- a/launchers/standalone/src/main/resources/s2-config.yaml +++ b/launchers/standalone/src/main/resources/s2-config.yaml @@ -40,4 +40,4 @@ s2: value: threshold: 0.5 min: - threshold: 0.3 \ No newline at end of file + threshold: 0.3