You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@linkis.apache.org by al...@apache.org on 2022/03/04 06:36:27 UTC

[incubator-linkis] branch dev-1.1.1 updated (aadafea -> 8011773)

This is an automated email from the ASF dual-hosted git repository.

alexkun pushed a change to branch dev-1.1.1
in repository https://gitbox.apache.org/repos/asf/incubator-linkis.git.


    from aadafea  Merge pull request #1585 from WeDataSphere/dev-1.1.1-merge
     new d25f446  Add related methods for operating proxy user cookies #1590
     new 1ff0972  Add Utils to get proxy user #1590
     new 2f959cf  Solve excel download naming problem
     new 43a3834  Optimize code
     new b0030f2  exclude commons-compress #1598
     new 029c4ea  Solve excel download naming problem
     new 2148c2d  update compress version
     new 2552fb9  add compress version 1.20
     new 7db4f95  update restful supports proxy user mode #1590
     new 8e45de1  add license header
     new ea2563c  MDQProtocol should extend RequestProtocol
     new 5ba1491  Optimize code
     new 8011773  remove message XmlRootElement annotation #1607

The 13 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 linkis-commons/linkis-hadoop-common/pom.xml        |  5 ++
 .../org/apache/linkis/proxy/ProxyUserEntity.java   | 66 +++++++++------
 .../org/apache/linkis/proxy/ProxyUserService.java  |  6 +-
 .../linkis/server/utils/ModuleUserUtils.java       | 96 ++++++++++++++++++++++
 .../scala/org/apache/linkis/server/Message.scala   |  8 +-
 .../linkis/server/conf/ServerConfiguration.scala   |  4 +
 .../linkis/server/security/ProxyUserSSOUtils.scala | 89 ++++++++++++++++++++
 .../apache/linkis/server/security/SSOUtils.scala   |  5 +-
 .../apache/linkis/protocol/mdq/MDQProtocol.scala   |  4 +-
 .../org/apache/linkis/rpc/RPCReceiveRestful.scala  |  9 +-
 .../linkis/storage/fs/impl/LocalFileSystem.java    |  2 +-
 .../entrance/restful/EntranceRestfulApi.java       |  6 +-
 .../linkis/entrance/EntranceWebSocketService.scala |  2 +-
 .../interceptor/impl/LabelCheckInterceptor.scala   |  5 --
 .../entrance/parser/CommonEntranceParser.scala     |  4 +-
 .../linkis/manager/am/restful/EMRestfulApi.java    | 13 +--
 .../manager/am/restful/EngineRestfulApi.java       | 20 +++--
 .../resourcemanager/restful/RMMonitorRest.scala    |  9 +-
 .../pipeline/executor/ExcelExecutor.scala          |  4 +-
 .../linkis/bml/restful/BmlProjectRestful.java      | 15 ++--
 .../apache/linkis/bml/restful/BmlRestfulApi.java   |  7 +-
 .../apache/linkis/bml/restful/RestfulUtils.java    |  4 +-
 .../linkis/cs/server/restful/CsRestfulParent.java  |  4 +-
 .../apache/linkis/cs/server/CsRestfulParent.java   |  4 +-
 .../metadata/restful/api/DataSourceRestfulApi.java | 14 ++--
 .../metadata/restful/api/MdqTableRestfulApi.java   | 16 ++--
 .../restful/api/ConfigurationRestfulApi.java       | 14 ++--
 .../instance/label/restful/InstanceRestful.java    |  5 +-
 .../jobhistory/restful/api/QueryRestfulApi.java    |  8 +-
 .../filesystem/restful/api/BMLFsRestfulApi.java    |  9 +-
 .../filesystem/restful/api/FsRestfulApi.java       | 74 +++++++++++++----
 .../filesystem/validator/PathValidator.scala       |  5 +-
 .../java/org/apache/linkis/udf/api/UDFApi.java     | 73 ++++++++--------
 .../variable/restful/api/VariableRestfulApi.java   |  6 +-
 .../ujes/route/AbstractLabelGatewayRouter.scala    | 30 +++----
 tool/dependencies/known-dependencies.txt           |  1 +
 36 files changed, 452 insertions(+), 194 deletions(-)
 copy linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/server/protocol/AbstractHttpRequestProtocol.java => linkis-commons/linkis-module/src/main/java/org/apache/linkis/proxy/ProxyUserEntity.java (50%)
 copy linkis-computation-governance/linkis-client/linkis-cli/linkis-cli-common/src/main/java/org/apache/linkis/cli/common/entity/execution/SubExecutionType.java => linkis-commons/linkis-module/src/main/java/org/apache/linkis/proxy/ProxyUserService.java (84%)
 create mode 100644 linkis-commons/linkis-module/src/main/java/org/apache/linkis/server/utils/ModuleUserUtils.java
 create mode 100644 linkis-commons/linkis-module/src/main/scala/org/apache/linkis/server/security/ProxyUserSSOUtils.scala

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@linkis.apache.org
For additional commands, e-mail: commits-help@linkis.apache.org


[incubator-linkis] 07/13: update compress version

Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

alexkun pushed a commit to branch dev-1.1.1
in repository https://gitbox.apache.org/repos/asf/incubator-linkis.git

commit 2148c2d251bff9fc47eb560518201ce07648ffb4
Author: peacewong <wp...@gmail.com>
AuthorDate: Thu Mar 3 16:26:16 2022 +0800

    update compress version
---
 tool/dependencies/known-dependencies.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tool/dependencies/known-dependencies.txt b/tool/dependencies/known-dependencies.txt
index f89fef4..13ffa31 100644
--- a/tool/dependencies/known-dependencies.txt
+++ b/tool/dependencies/known-dependencies.txt
@@ -55,7 +55,7 @@ commons-codec-1.14.jar
 commons-collections-3.2.2.jar
 commons-collections4-4.4.jar
 commons-compiler-3.1.2.jar
-commons-compress-1.20.jar
+commons-compress-1.21.jar
 commons-compress-1.4.1.jar
 commons-compress-1.9.jar
 commons-configuration-1.10.jar

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@linkis.apache.org
For additional commands, e-mail: commits-help@linkis.apache.org


[incubator-linkis] 02/13: Add Utils to get proxy user #1590

Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

alexkun pushed a commit to branch dev-1.1.1
in repository https://gitbox.apache.org/repos/asf/incubator-linkis.git

commit 1ff097269dfe8781d0bc590647a027c35bf01e00
Author: peacewong <wp...@gmail.com>
AuthorDate: Wed Mar 2 16:09:06 2022 +0800

    Add Utils to get proxy user #1590
---
 .../org/apache/linkis/proxy/ProxyUserEntity.java   | 62 +++++++++++++++
 .../org/apache/linkis/proxy/ProxyUserService.java  |  6 ++
 .../linkis/server/utils/ModuleUserUtils.java       | 78 +++++++++++++++++++
 .../linkis/server/security/ProxyUserSSOUtils.scala | 90 ++++++++++++++++++++++
 .../apache/linkis/server/security/SSOUtils.scala   | 27 +------
 5 files changed, 237 insertions(+), 26 deletions(-)

diff --git a/linkis-commons/linkis-module/src/main/java/org/apache/linkis/proxy/ProxyUserEntity.java b/linkis-commons/linkis-module/src/main/java/org/apache/linkis/proxy/ProxyUserEntity.java
new file mode 100644
index 0000000..f03fd45
--- /dev/null
+++ b/linkis-commons/linkis-module/src/main/java/org/apache/linkis/proxy/ProxyUserEntity.java
@@ -0,0 +1,62 @@
+package org.apache.linkis.proxy;
+
+import org.apache.commons.lang.StringUtils;
+
+public class ProxyUserEntity {
+
+    private String username;
+
+    private String proxyUser;
+
+    private String desc;
+
+    private Long elapseDay;
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getProxyUser() {
+        return proxyUser;
+    }
+
+    public void setProxyUser(String proxyUser) {
+        this.proxyUser = proxyUser;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public void setDesc(String desc) {
+        this.desc = desc;
+    }
+
+    public Long getElapseDay() {
+        return elapseDay;
+    }
+
+    public void setElapseDay(Long elapseDay) {
+        this.elapseDay = elapseDay;
+    }
+
+    public boolean isProxyMode() {
+        return StringUtils.isNotBlank(proxyUser) && !proxyUser.equals(username);
+    }
+
+    @Override
+    public String toString() {
+        return "ProxyUserEntity{"
+                + "username='"
+                + username
+                + '\''
+                + ", proxyUser='"
+                + proxyUser
+                + '\''
+                + '}';
+    }
+}
diff --git a/linkis-commons/linkis-module/src/main/java/org/apache/linkis/proxy/ProxyUserService.java b/linkis-commons/linkis-module/src/main/java/org/apache/linkis/proxy/ProxyUserService.java
new file mode 100644
index 0000000..29f63da
--- /dev/null
+++ b/linkis-commons/linkis-module/src/main/java/org/apache/linkis/proxy/ProxyUserService.java
@@ -0,0 +1,6 @@
+package org.apache.linkis.proxy;
+
+public interface ProxyUserService {
+
+    ProxyUserEntity getProxyUserEntity(String proxyUser, String loginUser);
+}
diff --git a/linkis-commons/linkis-module/src/main/java/org/apache/linkis/server/utils/ModuleUserUtils.java b/linkis-commons/linkis-module/src/main/java/org/apache/linkis/server/utils/ModuleUserUtils.java
new file mode 100644
index 0000000..874db6b
--- /dev/null
+++ b/linkis-commons/linkis-module/src/main/java/org/apache/linkis/server/utils/ModuleUserUtils.java
@@ -0,0 +1,78 @@
+package org.apache.linkis.server.utils;
+
+import org.apache.linkis.proxy.ProxyUserEntity;
+import org.apache.linkis.server.security.ProxyUserSSOUtils;
+import org.apache.linkis.server.security.SecurityFilter;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import scala.Option;
+
+public class ModuleUserUtils {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(ModuleUserUtils.class);
+
+    /**
+     * get ProxyUserEntity 1.if not support proxy return loginUser 2.if proxy user exist return
+     * proxyUser and loginUser
+     *
+     * @param httpServletRequest
+     * @return
+     */
+    public ProxyUserEntity getProxyUserEntity(HttpServletRequest httpServletRequest) {
+        String loginUser = SecurityFilter.getLoginUsername(httpServletRequest);
+        Option<String> proxyUserUsername =
+                ProxyUserSSOUtils.getProxyUserUsername(httpServletRequest);
+        ProxyUserEntity proxyUserEntity = new ProxyUserEntity();
+        proxyUserEntity.setUsername(loginUser);
+        if (proxyUserUsername.isDefined()) {
+            proxyUserEntity.setProxyUser(proxyUserUsername.get());
+        }
+        return proxyUserEntity;
+    }
+
+    /**
+     * get ProxyUserEntity and print operation log
+     *
+     * @param httpServletRequest
+     * @param msg
+     * @return
+     */
+    public ProxyUserEntity getProxyUserEntity(HttpServletRequest httpServletRequest, String msg) {
+        ProxyUserEntity proxyUserEntity = getProxyUserEntity(httpServletRequest);
+        LOGGER.info(
+                "user {} proxy to {} operation {}",
+                proxyUserEntity.getUsername(),
+                proxyUserEntity.getProxyUser(),
+                msg);
+        return proxyUserEntity;
+    }
+
+    public String getOperationUser(HttpServletRequest httpServletRequest) {
+        ProxyUserEntity proxyUserEntity = getProxyUserEntity(httpServletRequest);
+        if (proxyUserEntity.isProxyMode()) {
+            return proxyUserEntity.getProxyUser();
+        } else {
+            return proxyUserEntity.getUsername();
+        }
+    }
+
+    /**
+     * get operation user and print log
+     *
+     * @param httpServletRequest
+     * @param msg
+     * @return
+     */
+    public String getOperationUser(HttpServletRequest httpServletRequest, String msg) {
+        ProxyUserEntity proxyUserEntity = getProxyUserEntity(httpServletRequest, msg);
+        if (proxyUserEntity.isProxyMode()) {
+            return proxyUserEntity.getProxyUser();
+        } else {
+            return proxyUserEntity.getUsername();
+        }
+    }
+}
diff --git a/linkis-commons/linkis-module/src/main/scala/org/apache/linkis/server/security/ProxyUserSSOUtils.scala b/linkis-commons/linkis-module/src/main/scala/org/apache/linkis/server/security/ProxyUserSSOUtils.scala
new file mode 100644
index 0000000..cac0723
--- /dev/null
+++ b/linkis-commons/linkis-module/src/main/scala/org/apache/linkis/server/security/ProxyUserSSOUtils.scala
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.linkis.server.security
+
+import org.apache.commons.lang.StringUtils
+import org.apache.linkis.common.conf.CommonVars
+import org.apache.linkis.common.utils.{DESUtil, Logging}
+import org.apache.linkis.server.conf.ServerConfiguration
+import org.apache.linkis.server.security.SecurityFilter.getLoginUser
+
+import javax.servlet.http.{Cookie, HttpServletRequest}
+
+object ProxyUserSSOUtils extends Logging {
+
+
+  private val PROXY_TICKET_HEADER_CRYPT_KEY = CommonVars("wds.linkis.proxy.ticket.header.crypt.key", "linkis-trust-key").getValue
+
+  private val PROXY_TICKET_HEADER_CONTENT = CommonVars("wds.linkis.proxy.ticket.header.crypt.key", "bfs_").getValue
+
+  private val linkisTrustCode = DESUtil.encrypt(PROXY_TICKET_HEADER_CONTENT, PROXY_TICKET_HEADER_CRYPT_KEY)
+
+  private[security] val PROXY_USER_TICKET_ID_STRING = ServerConfiguration.LINKIS_SERVER_SESSION_PROXY_TICKETID_KEY.getValue
+
+  private val sslEnable: Boolean = ServerConfiguration.BDP_SERVER_SECURITY_SSL.getValue
+
+  private def getProxyUsernameByTicket(ticketId: String): Option[String] = if (StringUtils.isBlank(ticketId)) None
+  else {
+    val userName = DESUtil.decrypt(ticketId, ServerConfiguration.cryptKey)
+    if(userName.startsWith(linkisTrustCode)) Some(userName.substring(linkisTrustCode.length))
+    else None
+  }
+
+  private def getTicketByUsernameAndTrustCode(userName: String, trustCode: String): String = {
+    if (! trustCode.equals(linkisTrustCode)) {
+      logger.info(s"$trustCode error,will be use default username")
+      userName
+    } else {
+      DESUtil.encrypt(trustCode + userName, ServerConfiguration.cryptKey)
+    }
+  }
+
+  def getProxyUserTicketKV(proxyUsername: String, trustCode: String): (String, String) = {
+    val userTicketId = getTicketByUsernameAndTrustCode(proxyUsername, trustCode)
+    (PROXY_USER_TICKET_ID_STRING, userTicketId)
+  }
+
+  def setProxyUserCookie(addCookie: Cookie => Unit, username: String, trustCode: String): Unit = {
+    info(s"add login userTicketCookie for user $username.")
+    val userTicketIdKv = getProxyUserTicketKV(username, trustCode)
+    val cookie = new Cookie(userTicketIdKv._1, userTicketIdKv._2)
+    cookie.setMaxAge(-1)
+    if(sslEnable) cookie.setSecure(true)
+    cookie.setPath("/")
+    addCookie(cookie)
+  }
+
+
+  def removeProxyUser(getCookies: => Array[Cookie]): Unit = {
+    val cookies = getCookies
+    if(cookies != null) cookies.find(_.getName == PROXY_USER_TICKET_ID_STRING).foreach { cookie =>
+      cookie.setValue(null)
+      cookie.setMaxAge(0)
+    }
+  }
+
+  def getProxyUserUsername(req: HttpServletRequest): Option[String] = {
+    val ticketOption = Option(req.getCookies).flatMap(_.find(_.getName == PROXY_USER_TICKET_ID_STRING).map(_.getValue))
+    if (ticketOption.isDefined) {
+      getProxyUsernameByTicket(ticketOption.get)
+    } else {
+      None
+    }
+  }
+
+}
diff --git a/linkis-commons/linkis-module/src/main/scala/org/apache/linkis/server/security/SSOUtils.scala b/linkis-commons/linkis-module/src/main/scala/org/apache/linkis/server/security/SSOUtils.scala
index 6fe2cff..f357c8b 100644
--- a/linkis-commons/linkis-module/src/main/scala/org/apache/linkis/server/security/SSOUtils.scala
+++ b/linkis-commons/linkis-module/src/main/scala/org/apache/linkis/server/security/SSOUtils.scala
@@ -31,8 +31,6 @@ object SSOUtils extends Logging {
 
   private[security] val USER_TICKET_ID_STRING = ServerConfiguration.LINKIS_SERVER_SESSION_TICKETID_KEY.getValue
 
-  private[security] val PROXY_USER_TICKET_ID_STRING = ServerConfiguration.LINKIS_SERVER_SESSION_PROXY_TICKETID_KEY.getValue
-
   private val sessionTimeout = ServerConfiguration.BDP_SERVER_WEB_SESSION_TIMEOUT.getValue.toLong
 
   private val userTicketIdToLastAccessTime = new ConcurrentHashMap[String, Long]()
@@ -105,7 +103,7 @@ object SSOUtils extends Logging {
       cookie.setValue(null)
       cookie.setMaxAge(0)
     }
-    removeProxyUser(cookies)
+    ProxyUserSSOUtils.removeProxyUser(cookies)
   }
 
   def removeLoginUserByAddCookie(addEmptyCookie: Cookie => Unit): Unit = {
@@ -156,29 +154,6 @@ object SSOUtils extends Logging {
 
   def getSessionTimeOut(): Long = sessionTimeout
 
-  def getProxyUserTicketKV(proxyUsername: String): (String, String) = {
-    val userTicketId = getUserTicketId(proxyUsername)
-    (PROXY_USER_TICKET_ID_STRING, userTicketId)
-  }
 
-  def setProxyUserCookie(addCookie: Cookie => Unit, username: String): Unit = {
-    info(s"add login userTicketCookie for user $username.")
-    val userTicketIdKv = getProxyUserTicketKV(username)
-    val cookie = new Cookie(userTicketIdKv._1, userTicketIdKv._2)
-    cookie.setMaxAge(-1)
-    if(sslEnable) cookie.setSecure(true)
-    cookie.setPath("/")
-    addCookie(cookie)
-  }
-
-  def getProxyUser(getCookies: => Array[Cookie]): Option[String] = getLoginUser(_ => Option(getCookies).flatMap(_.find(_.getName == PROXY_USER_TICKET_ID_STRING).map(_.getValue)))
-
-  def removeProxyUser(getCookies: => Array[Cookie]): Unit = {
-    val cookies = getCookies
-    if(cookies != null) cookies.find(_.getName == PROXY_USER_TICKET_ID_STRING).foreach { cookie =>
-      cookie.setValue(null)
-      cookie.setMaxAge(0)
-    }
-  }
 
 }

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@linkis.apache.org
For additional commands, e-mail: commits-help@linkis.apache.org


[incubator-linkis] 12/13: Optimize code

Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

alexkun pushed a commit to branch dev-1.1.1
in repository https://gitbox.apache.org/repos/asf/incubator-linkis.git

commit 5ba149118a4767e3c23fcc0b2ceece665eb8befa
Author: peacewong <wp...@gmail.com>
AuthorDate: Thu Mar 3 21:12:27 2022 +0800

    Optimize code
---
 .../ujes/route/AbstractLabelGatewayRouter.scala    | 30 ++++++++--------------
 1 file changed, 10 insertions(+), 20 deletions(-)

diff --git a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-server-support/src/main/scala/org/apache/linkis/gateway/ujes/route/AbstractLabelGatewayRouter.scala b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-server-support/src/main/scala/org/apache/linkis/gateway/ujes/route/AbstractLabelGatewayRouter.scala
index b02194a..916fb02 100644
--- a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-server-support/src/main/scala/org/apache/linkis/gateway/ujes/route/AbstractLabelGatewayRouter.scala
+++ b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-server-support/src/main/scala/org/apache/linkis/gateway/ujes/route/AbstractLabelGatewayRouter.scala
@@ -17,17 +17,16 @@
  
 package org.apache.linkis.gateway.ujes.route
 
-import java.util
-
+import org.apache.commons.lang.StringUtils
 import org.apache.linkis.common.ServiceInstance
 import org.apache.linkis.common.utils.Logging
-import org.apache.linkis.gateway.exception.GatewayErrorException
 import org.apache.linkis.gateway.http.GatewayContext
 import org.apache.linkis.gateway.route.AbstractGatewayRouter
 import org.apache.linkis.instance.label.service.InsLabelService
 import org.apache.linkis.manager.label.entity.route.RouteLabel
+
+import java.util
 import javax.annotation.Resource
-import org.apache.commons.lang.StringUtils
 
 abstract class AbstractLabelGatewayRouter extends AbstractGatewayRouter with Logging {
 
@@ -43,31 +42,22 @@ abstract class AbstractLabelGatewayRouter extends AbstractGatewayRouter with Log
 
 
   override def route(gatewayContext: GatewayContext): ServiceInstance = {
-    val routeLabels: Option[util.List[RouteLabel]] = Option(parseToRouteLabels(gatewayContext))
+    val routeLabels: util.List[RouteLabel] = parseToRouteLabels(gatewayContext)
     val serviceInstance: ServiceInstance = gatewayContext.getGatewayRoute.getServiceInstance
     if (StringUtils.isNotBlank(serviceInstance.getApplicationName) && StringUtils.isNotBlank(serviceInstance.getInstance)) {
-      //如果前面已经确认instance则跳过
       return serviceInstance
     }
-    val candidateServices = routeLabels match {
-      case _ if routeLabels.isDefined && !routeLabels.get.isEmpty =>
-        gatewayContext.getGatewayRoute.setLabels(routeLabels.get)
-        Option(insLabelService.searchInstancesByLabels(routeLabels.get))
-      case _ =>
-        if (null != serviceInstance) {
-          logger.info("Cannot find route labels, now to find the default [" + serviceInstance.getApplicationName + "] service instances")
-          //Use application name to query service instances
-          Option(insLabelService.searchUnRelateInstances(serviceInstance))
-        } else {
-          throw new GatewayErrorException(11011, s"Cannot route the service instance without application name and labels")
-        }
+    if (null == routeLabels || routeLabels.isEmpty) {
+      return null
     }
-    val canSelectInstances = if (candidateServices.isEmpty || candidateServices.get.size <= 0) {
+
+    val candidateServices = insLabelService.searchInstancesByLabels(routeLabels)
+    val canSelectInstances = if (null == candidateServices || candidateServices.isEmpty) {
       val labelRelatedInstances = Option(insLabelService.searchLabelRelatedInstances(serviceInstance))
       removeAllFromRegistry(serviceInstance.getApplicationName,
         labelRelatedInstances.getOrElse(new util.ArrayList[ServiceInstance]()))
     } else {
-      candidateServices.get
+      candidateServices
     }
     selectInstance(gatewayContext, canSelectInstances)
   }

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@linkis.apache.org
For additional commands, e-mail: commits-help@linkis.apache.org


[incubator-linkis] 09/13: update restful supports proxy user mode #1590

Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

alexkun pushed a commit to branch dev-1.1.1
in repository https://gitbox.apache.org/repos/asf/incubator-linkis.git

commit 7db4f9524c763622500a5a3601cc60bcc41930e8
Author: peacewong <wp...@gmail.com>
AuthorDate: Thu Mar 3 18:43:05 2022 +0800

    update restful supports proxy user mode #1590
---
 .../linkis/server/utils/ModuleUserUtils.java       |  9 +--
 .../linkis/storage/fs/impl/LocalFileSystem.java    |  1 -
 .../entrance/restful/EntranceRestfulApi.java       |  6 +-
 .../linkis/entrance/EntranceWebSocketService.scala |  2 +-
 .../interceptor/impl/LabelCheckInterceptor.scala   |  5 --
 .../entrance/parser/CommonEntranceParser.scala     |  4 +-
 .../linkis/manager/am/restful/EMRestfulApi.java    | 13 ++--
 .../manager/am/restful/EngineRestfulApi.java       | 20 +++---
 .../resourcemanager/restful/RMMonitorRest.scala    |  9 +--
 .../linkis/bml/restful/BmlProjectRestful.java      | 15 +++--
 .../apache/linkis/bml/restful/BmlRestfulApi.java   |  7 +--
 .../apache/linkis/bml/restful/RestfulUtils.java    |  4 +-
 .../linkis/cs/server/restful/CsRestfulParent.java  |  4 +-
 .../apache/linkis/cs/server/CsRestfulParent.java   |  4 +-
 .../metadata/restful/api/DataSourceRestfulApi.java | 14 ++---
 .../metadata/restful/api/MdqTableRestfulApi.java   | 16 ++---
 .../restful/api/ConfigurationRestfulApi.java       | 14 ++---
 .../instance/label/restful/InstanceRestful.java    |  5 +-
 .../jobhistory/restful/api/QueryRestfulApi.java    |  8 +--
 .../filesystem/restful/api/BMLFsRestfulApi.java    |  9 +--
 .../filesystem/restful/api/FsRestfulApi.java       | 39 +++++++-----
 .../filesystem/validator/PathValidator.scala       |  5 +-
 .../java/org/apache/linkis/udf/api/UDFApi.java     | 73 ++++++++++++----------
 .../variable/restful/api/VariableRestfulApi.java   |  6 +-
 24 files changed, 154 insertions(+), 138 deletions(-)

diff --git a/linkis-commons/linkis-module/src/main/java/org/apache/linkis/server/utils/ModuleUserUtils.java b/linkis-commons/linkis-module/src/main/java/org/apache/linkis/server/utils/ModuleUserUtils.java
index 874db6b..198cbb9 100644
--- a/linkis-commons/linkis-module/src/main/java/org/apache/linkis/server/utils/ModuleUserUtils.java
+++ b/linkis-commons/linkis-module/src/main/java/org/apache/linkis/server/utils/ModuleUserUtils.java
@@ -22,7 +22,7 @@ public class ModuleUserUtils {
      * @param httpServletRequest
      * @return
      */
-    public ProxyUserEntity getProxyUserEntity(HttpServletRequest httpServletRequest) {
+    public static ProxyUserEntity getProxyUserEntity(HttpServletRequest httpServletRequest) {
         String loginUser = SecurityFilter.getLoginUsername(httpServletRequest);
         Option<String> proxyUserUsername =
                 ProxyUserSSOUtils.getProxyUserUsername(httpServletRequest);
@@ -41,7 +41,8 @@ public class ModuleUserUtils {
      * @param msg
      * @return
      */
-    public ProxyUserEntity getProxyUserEntity(HttpServletRequest httpServletRequest, String msg) {
+    public static ProxyUserEntity getProxyUserEntity(
+            HttpServletRequest httpServletRequest, String msg) {
         ProxyUserEntity proxyUserEntity = getProxyUserEntity(httpServletRequest);
         LOGGER.info(
                 "user {} proxy to {} operation {}",
@@ -51,7 +52,7 @@ public class ModuleUserUtils {
         return proxyUserEntity;
     }
 
-    public String getOperationUser(HttpServletRequest httpServletRequest) {
+    public static String getOperationUser(HttpServletRequest httpServletRequest) {
         ProxyUserEntity proxyUserEntity = getProxyUserEntity(httpServletRequest);
         if (proxyUserEntity.isProxyMode()) {
             return proxyUserEntity.getProxyUser();
@@ -67,7 +68,7 @@ public class ModuleUserUtils {
      * @param msg
      * @return
      */
-    public String getOperationUser(HttpServletRequest httpServletRequest, String msg) {
+    public static String getOperationUser(HttpServletRequest httpServletRequest, String msg) {
         ProxyUserEntity proxyUserEntity = getProxyUserEntity(httpServletRequest, msg);
         if (proxyUserEntity.isProxyMode()) {
             return proxyUserEntity.getProxyUser();
diff --git a/linkis-commons/linkis-storage/src/main/java/org/apache/linkis/storage/fs/impl/LocalFileSystem.java b/linkis-commons/linkis-storage/src/main/java/org/apache/linkis/storage/fs/impl/LocalFileSystem.java
index b026648..edee4eb 100644
--- a/linkis-commons/linkis-storage/src/main/java/org/apache/linkis/storage/fs/impl/LocalFileSystem.java
+++ b/linkis-commons/linkis-storage/src/main/java/org/apache/linkis/storage/fs/impl/LocalFileSystem.java
@@ -180,7 +180,6 @@ public class LocalFileSystem extends FileSystem {
             }
             return true;
         }
-
     }
 
     @Override
diff --git a/linkis-computation-governance/linkis-entrance/src/main/java/org/apache/linkis/entrance/restful/EntranceRestfulApi.java b/linkis-computation-governance/linkis-entrance/src/main/java/org/apache/linkis/entrance/restful/EntranceRestfulApi.java
index d25a693..c7760da 100644
--- a/linkis-computation-governance/linkis-entrance/src/main/java/org/apache/linkis/entrance/restful/EntranceRestfulApi.java
+++ b/linkis-computation-governance/linkis-entrance/src/main/java/org/apache/linkis/entrance/restful/EntranceRestfulApi.java
@@ -37,6 +37,7 @@ import org.apache.linkis.scheduler.queue.Job;
 import org.apache.linkis.scheduler.queue.SchedulerEventState;
 import org.apache.linkis.server.Message;
 import org.apache.linkis.server.security.SecurityFilter;
+import org.apache.linkis.server.utils.ModuleUserUtils;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringUtils;
@@ -76,7 +77,8 @@ public class EntranceRestfulApi implements EntranceRestfulRemote {
     public Message execute(HttpServletRequest req, @RequestBody Map<String, Object> json) {
         Message message = null;
         logger.info("Begin to get an execID");
-        json.put(TaskConstant.UMUSER, SecurityFilter.getLoginUsername(req));
+        json.put(TaskConstant.EXECUTE_USER, ModuleUserUtils.getOperationUser(req));
+        json.put(TaskConstant.SUBMIT_USER, SecurityFilter.getLoginUsername(req));
         HashMap<String, String> map = (HashMap) json.get(TaskConstant.SOURCE);
         if (map == null) {
             map = new HashMap<>();
@@ -88,6 +90,7 @@ public class EntranceRestfulApi implements EntranceRestfulRemote {
         Job job = entranceServer.getJob(jobId).get();
         JobRequest jobReq = ((EntranceJob) job).getJobRequest();
         Long jobReqId = jobReq.getId();
+        ModuleUserUtils.getOperationUser(req, "execute task,id: " + jobReqId);
         pushLog(
                 LogUtils.generateInfo(
                         "You have submitted a new job, script code (after variable substitution) is"),
@@ -126,6 +129,7 @@ public class EntranceRestfulApi implements EntranceRestfulRemote {
     public Message submit(HttpServletRequest req, @RequestBody Map<String, Object> json) {
         Message message = null;
         logger.info("Begin to get an execID");
+        json.put(TaskConstant.EXECUTE_USER, ModuleUserUtils.getOperationUser(req));
         json.put(TaskConstant.SUBMIT_USER, SecurityFilter.getLoginUsername(req));
         HashMap<String, String> map = (HashMap) json.get(TaskConstant.SOURCE);
         if (map == null) {
diff --git a/linkis-computation-governance/linkis-entrance/src/main/scala/org/apache/linkis/entrance/EntranceWebSocketService.scala b/linkis-computation-governance/linkis-entrance/src/main/scala/org/apache/linkis/entrance/EntranceWebSocketService.scala
index 7b44891..64fc28f 100644
--- a/linkis-computation-governance/linkis-entrance/src/main/scala/org/apache/linkis/entrance/EntranceWebSocketService.scala
+++ b/linkis-computation-governance/linkis-entrance/src/main/scala/org/apache/linkis/entrance/EntranceWebSocketService.scala
@@ -120,7 +120,7 @@ class EntranceWebSocketService extends ServerEventService with EntranceEventList
   def dealExecute(event:ServerEvent):Message = {
     val params = event.getData.map{case (k, v) => k -> v.asInstanceOf[Any]}  //TODO Convert to a suitable Map(转换成合适的Map)
     val websocketTag = event.getWebsocketTag
-    params.put(TaskConstant.UMUSER, event.getUser)
+    params.put(TaskConstant.EXECUTE_USER, event.getUser)
     val jobId = entranceServer.execute(params)
     jobIdToEventId synchronized jobIdToEventId.put(jobId, event.getId)
     websocketTagJobID synchronized websocketTagJobID.put(jobId, websocketTag)
diff --git a/linkis-computation-governance/linkis-entrance/src/main/scala/org/apache/linkis/entrance/interceptor/impl/LabelCheckInterceptor.scala b/linkis-computation-governance/linkis-entrance/src/main/scala/org/apache/linkis/entrance/interceptor/impl/LabelCheckInterceptor.scala
index cb80d16..115fb83 100644
--- a/linkis-computation-governance/linkis-entrance/src/main/scala/org/apache/linkis/entrance/interceptor/impl/LabelCheckInterceptor.scala
+++ b/linkis-computation-governance/linkis-entrance/src/main/scala/org/apache/linkis/entrance/interceptor/impl/LabelCheckInterceptor.scala
@@ -70,12 +70,7 @@ class LabelCheckInterceptor extends EntranceInterceptor {
     if (userCreatorLabelOption.isDefined) {
       val userCreator = userCreatorLabelOption.get.asInstanceOf[UserCreatorLabel]
       if (StringUtils.isNotBlank(userCreator.getUser)) {
-        val userInLabel = userCreator.getUser
-        if (userInLabel.equalsIgnoreCase(executeUser) && userInLabel.equalsIgnoreCase(submitUser)) {
         return
-        } else {
-          throw LabelCheckException(50080, s"SubmitUser : ${submitUser} must be the same as ExecuteUser : ${executeUser} , and user : ${userInLabel} in userCreatorLabel.")
-        }
       }
     }
     throw LabelCheckException(50079, "UserCreatorLabel must be need")
diff --git a/linkis-computation-governance/linkis-entrance/src/main/scala/org/apache/linkis/entrance/parser/CommonEntranceParser.scala b/linkis-computation-governance/linkis-entrance/src/main/scala/org/apache/linkis/entrance/parser/CommonEntranceParser.scala
index 56a1bee..1cfb322 100644
--- a/linkis-computation-governance/linkis-entrance/src/main/scala/org/apache/linkis/entrance/parser/CommonEntranceParser.scala
+++ b/linkis-computation-governance/linkis-entrance/src/main/scala/org/apache/linkis/entrance/parser/CommonEntranceParser.scala
@@ -155,13 +155,13 @@ class CommonEntranceParser(val persistenceManager: PersistenceManager) extends A
 
     val jobReq = new JobRequest
     jobReq.setCreatedTime(new Date(System.currentTimeMillis))
-    val umUser = params.get(TaskConstant.UMUSER).asInstanceOf[String]
+    val umUser = params.get(TaskConstant.EXECUTE_USER).asInstanceOf[String]
     val submitUser = params.get(TaskConstant.SUBMIT_USER).asInstanceOf[String]
     jobReq.setSubmitUser(submitUser)
     if (StringUtils.isBlank(submitUser)) {
       jobReq.setSubmitUser(umUser)
     }
-    if (umUser == null) throw new EntranceIllegalParamException(20005, "umUser can not be null")
+    if (umUser == null) throw new EntranceIllegalParamException(20005, "execute user can not be null")
     jobReq.setExecuteUser(umUser)
     var executionCode = params.get(TaskConstant.EXECUTIONCODE).asInstanceOf[String]
     val _params = params.get(TaskConstant.PARAMS)
diff --git a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/restful/EMRestfulApi.java b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/restful/EMRestfulApi.java
index cbf9329..077177c 100644
--- a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/restful/EMRestfulApi.java
+++ b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/restful/EMRestfulApi.java
@@ -43,7 +43,7 @@ import org.apache.linkis.manager.label.entity.UserModifiable;
 import org.apache.linkis.manager.label.exception.LabelErrorException;
 import org.apache.linkis.manager.label.service.NodeLabelService;
 import org.apache.linkis.server.Message;
-import org.apache.linkis.server.security.SecurityFilter;
+import org.apache.linkis.server.utils.ModuleUserUtils;
 
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang.ArrayUtils;
@@ -106,7 +106,7 @@ public class EMRestfulApi {
             @RequestParam(value = "nodeHealthy", required = false) String nodeHealthy,
             @RequestParam(value = "owner", required = false) String owner)
             throws AMErrorException {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "listAllEMs");
         checkAdmin(userName);
         EMNode[] allEM = emInfoService.getAllEM();
         ArrayList<EMNodeVo> allEMVo = AMUtils.copyToEMVo(allEM);
@@ -172,7 +172,7 @@ public class EMRestfulApi {
     @Transactional(rollbackFor = Exception.class)
     public Message modifyEMInfo(HttpServletRequest req, @RequestBody JsonNode jsonNode)
             throws AMErrorException, LabelErrorException {
-        String username = SecurityFilter.getLoginUsername(req);
+        String username = ModuleUserUtils.getOperationUser(req, "modifyEMInfo");
         checkAdmin(username);
         String applicationName = jsonNode.get("applicationName").asText();
         String instance = jsonNode.get("instance").asText();
@@ -232,8 +232,9 @@ public class EMRestfulApi {
     @RequestMapping(path = "/executeECMOperationByEC", method = RequestMethod.POST)
     public Message executeECMOperationByEC(HttpServletRequest req, @RequestBody JsonNode jsonNode)
             throws AMErrorException {
-        String userName = SecurityFilter.getLoginUsername(req);
+
         ServiceInstance serviceInstance = EngineRestfulApi.getServiceInstance(jsonNode);
+        String userName = ModuleUserUtils.getOperationUser(req, "executeECMOperationByEC");
         logger.info(
                 "User {} try to execute ECM Operation by EngineConn {}.",
                 userName,
@@ -268,7 +269,7 @@ public class EMRestfulApi {
     @RequestMapping(path = "/executeECMOperation", method = RequestMethod.POST)
     public Message executeECMOperation(HttpServletRequest req, @RequestBody JsonNode jsonNode)
             throws AMErrorException {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "executeECMOperation");
         ServiceInstance serviceInstance = EngineRestfulApi.getServiceInstance(jsonNode);
         logger.info("User {} try to execute ECM Operation with {}.", userName, serviceInstance);
         EMNode ecmNode = this.emInfoService.getEM(serviceInstance);
@@ -294,7 +295,7 @@ public class EMRestfulApi {
     @RequestMapping(path = "/openEngineLog", method = RequestMethod.POST)
     public Message openEngineLog(HttpServletRequest req, @RequestBody JsonNode jsonNode)
             throws AMErrorException {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "openEngineLog");
         EMNode ecmNode;
         Map<String, Object> parameters;
         try {
diff --git a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/restful/EngineRestfulApi.java b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/restful/EngineRestfulApi.java
index 9df0124..f83ba61 100644
--- a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/restful/EngineRestfulApi.java
+++ b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/restful/EngineRestfulApi.java
@@ -43,7 +43,7 @@ import org.apache.linkis.manager.label.exception.LabelErrorException;
 import org.apache.linkis.manager.label.service.NodeLabelService;
 import org.apache.linkis.rpc.Sender;
 import org.apache.linkis.server.Message;
-import org.apache.linkis.server.security.SecurityFilter;
+import org.apache.linkis.server.utils.ModuleUserUtils;
 
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang.StringUtils;
@@ -90,7 +90,7 @@ public class EngineRestfulApi {
     @RequestMapping(path = "/createEngineConn", method = RequestMethod.POST)
     public Message createEngineConn(HttpServletRequest req, @RequestBody JsonNode jsonNode)
             throws IOException, InterruptedException {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "createEngineConn");
         EngineCreateRequest engineCreateRequest =
                 objectMapper.treeToValue(jsonNode, EngineCreateRequest.class);
         engineCreateRequest.setUser(userName);
@@ -135,7 +135,7 @@ public class EngineRestfulApi {
     @RequestMapping(path = "/getEngineConn", method = RequestMethod.POST)
     public Message getEngineConn(HttpServletRequest req, @RequestBody JsonNode jsonNode)
             throws AMErrorException {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "getEngineConn");
         ServiceInstance serviceInstance = getServiceInstance(jsonNode);
         EngineNode engineNode = engineCreateService.getEngineNode(serviceInstance);
         if (!userName.equals(engineNode.getOwner()) && !isAdmin(userName)) {
@@ -147,8 +147,10 @@ public class EngineRestfulApi {
     @RequestMapping(path = "/killEngineConn", method = RequestMethod.POST)
     public Message killEngineConn(HttpServletRequest req, @RequestBody JsonNode jsonNode)
             throws Exception {
-        String userName = SecurityFilter.getLoginUsername(req);
+
         ServiceInstance serviceInstance = getServiceInstance(jsonNode);
+        String userName =
+                ModuleUserUtils.getOperationUser(req, "killEngineConn:" + serviceInstance);
         logger.info("User {} try to kill engineConn {}.", userName, serviceInstance);
         EngineNode engineNode = engineCreateService.getEngineNode(serviceInstance);
         if (!userName.equals(engineNode.getOwner()) && !isAdmin(userName)) {
@@ -164,7 +166,7 @@ public class EngineRestfulApi {
     @RequestMapping(path = "/rm/enginekill", method = RequestMethod.POST)
     public Message killEngine(HttpServletRequest req, @RequestBody Map<String, String>[] param)
             throws Exception {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "enginekill");
         Sender sender = Sender.getSender(Sender.getThisServiceInstance());
         for (Map<String, String> engineParam : param) {
             String moduleName = engineParam.get("applicationName");
@@ -180,7 +182,7 @@ public class EngineRestfulApi {
 
     @RequestMapping(path = "/listUserEngines", method = RequestMethod.GET)
     public Message listUserEngines(HttpServletRequest req) {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "listUserEngines");
         List<EngineNode> engineNodes = engineInfoService.listUserEngines(userName);
         return Message.ok().data("engines", engineNodes);
     }
@@ -188,7 +190,7 @@ public class EngineRestfulApi {
     @RequestMapping(path = "/listEMEngines", method = RequestMethod.POST)
     public Message listEMEngines(HttpServletRequest req, @RequestBody JsonNode jsonNode)
             throws IOException, AMErrorException {
-        String username = SecurityFilter.getLoginUsername(req);
+        String username = ModuleUserUtils.getOperationUser(req, "listEMEngines");
         if (!isAdmin(username)) {
             throw new AMErrorException(
                     210003, "Only admin can search engine information(只有管理员才能查询所有引擎信息).");
@@ -265,7 +267,7 @@ public class EngineRestfulApi {
     @RequestMapping(path = "/modifyEngineInfo", method = RequestMethod.PUT)
     public Message modifyEngineInfo(HttpServletRequest req, @RequestBody JsonNode jsonNode)
             throws AMErrorException, LabelErrorException {
-        String username = SecurityFilter.getLoginUsername(req);
+        String username = ModuleUserUtils.getOperationUser(req, "modifyEngineInfo");
         if (!isAdmin(username)) {
             throw new AMErrorException(
                     210003, "Only admin can modify engineConn information(只有管理员才能修改引擎信息).");
@@ -309,7 +311,7 @@ public class EngineRestfulApi {
     @RequestMapping(path = "/executeEngineConnOperation", method = RequestMethod.POST)
     public Message executeEngineConnOperation(
             HttpServletRequest req, @RequestBody JsonNode jsonNode) throws Exception {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "executeEngineConnOperation");
         ServiceInstance serviceInstance = getServiceInstance(jsonNode);
         logger.info("User {} try to execute Engine Operation {}.", userName, serviceInstance);
         EngineNode engineNode = engineCreateService.getEngineNode(serviceInstance);
diff --git a/linkis-computation-governance/linkis-manager/linkis-resource-manager/src/main/scala/org/apache/linkis/resourcemanager/restful/RMMonitorRest.scala b/linkis-computation-governance/linkis-manager/linkis-resource-manager/src/main/scala/org/apache/linkis/resourcemanager/restful/RMMonitorRest.scala
index c5e9592..98bf442 100644
--- a/linkis-computation-governance/linkis-manager/linkis-resource-manager/src/main/scala/org/apache/linkis/resourcemanager/restful/RMMonitorRest.scala
+++ b/linkis-computation-governance/linkis-manager/linkis-resource-manager/src/main/scala/org/apache/linkis/resourcemanager/restful/RMMonitorRest.scala
@@ -44,6 +44,7 @@ import org.apache.linkis.resourcemanager.service.impl.UserResourceService
 import org.apache.linkis.resourcemanager.service.{LabelResourceService, ResourceManager}
 import org.apache.linkis.resourcemanager.utils.{RMUtils, UserConfiguration}
 import org.apache.linkis.server.security.SecurityFilter
+import org.apache.linkis.server.utils.ModuleUserUtils
 import org.apache.linkis.server.{BDPJettyServerHelper, Message}
 import org.json4s.DefaultFormats
 import org.json4s.jackson.Serialization.write
@@ -108,7 +109,7 @@ class RMMonitorRest extends Logging {
   @RequestMapping(path = Array("applicationlist"), method = Array(RequestMethod.POST))
   def getApplicationList(request: HttpServletRequest, @RequestBody param: util.Map[String, AnyRef]): Message = {
     val message = Message.ok("")
-    val userName = SecurityFilter.getLoginUsername(request)
+    val userName = ModuleUserUtils.getOperationUser(request, "applicationlist")
     val userCreator = param.get("userCreator").asInstanceOf[String]
     val engineType = if (param.get("engineType") == null) null else param.get("engineType").asInstanceOf[String]
     val nodes = getEngineNodes(userName, true)
@@ -228,7 +229,7 @@ class RMMonitorRest extends Logging {
   @RequestMapping(path = Array("userresources"), method = Array(RequestMethod.POST))
   def getUserResource(request: HttpServletRequest, @RequestBody(required = false) param: util.Map[String, AnyRef]): Message = {
     val message = Message.ok("")
-    val userName = SecurityFilter.getLoginUsername(request)
+    val userName = ModuleUserUtils.getOperationUser(request, "get userresources")
     var nodes = getEngineNodes(userName, true)
     if (nodes == null) {
       nodes = new Array[EngineNode](0)
@@ -336,7 +337,7 @@ class RMMonitorRest extends Logging {
   @RequestMapping(path = Array("engines"), method = Array(RequestMethod.POST))
   def getEngines(request: HttpServletRequest, @RequestBody(required = false) param: util.Map[String, AnyRef]): Message = {
     val message = Message.ok("")
-    val userName = SecurityFilter.getLoginUsername(request)
+    val userName = ModuleUserUtils.getOperationUser(request, "get engines")
     val nodes = getEngineNodes(userName, true)
     if(nodes == null || nodes.isEmpty) return message
     val engines = ArrayBuffer[mutable.HashMap[String, Any]]()
@@ -455,7 +456,7 @@ class RMMonitorRest extends Logging {
   @RequestMapping(path = Array("queues"), method = Array(RequestMethod.POST))
   def getQueues(request: HttpServletRequest, @RequestBody(required = false) param: util.Map[String, AnyRef]): Message = {
     val message = Message.ok()
-    val userName = SecurityFilter.getLoginUsername(request)
+    val userName = ModuleUserUtils.getOperationUser(request, "get queues")
     val clusters = new mutable.ArrayBuffer[Any]()
     val clusterInfo = new mutable.HashMap[String, Any]()
     val queues = new mutable.LinkedHashSet[String]()
diff --git a/linkis-public-enhancements/linkis-bml/linkis-bml-server/src/main/java/org/apache/linkis/bml/restful/BmlProjectRestful.java b/linkis-public-enhancements/linkis-bml/linkis-bml-server/src/main/java/org/apache/linkis/bml/restful/BmlProjectRestful.java
index abf061f..d634370 100644
--- a/linkis-public-enhancements/linkis-bml/linkis-bml-server/src/main/java/org/apache/linkis/bml/restful/BmlProjectRestful.java
+++ b/linkis-public-enhancements/linkis-bml/linkis-bml-server/src/main/java/org/apache/linkis/bml/restful/BmlProjectRestful.java
@@ -26,7 +26,7 @@ import org.apache.linkis.bml.service.*;
 import org.apache.linkis.bml.util.HttpRequestHelper;
 import org.apache.linkis.common.exception.ErrorException;
 import org.apache.linkis.server.Message;
-import org.apache.linkis.server.security.SecurityFilter;
+import org.apache.linkis.server.utils.ModuleUserUtils;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringUtils;
@@ -75,8 +75,10 @@ public class BmlProjectRestful {
 
     @RequestMapping(path = "createBmlProject", method = RequestMethod.POST)
     public Message createBmlProject(HttpServletRequest request, @RequestBody JsonNode jsonNode) {
-        String username = SecurityFilter.getLoginUsername(request);
+
         String projectName = jsonNode.get(PROJECT_NAME_STR).textValue();
+        String username =
+                ModuleUserUtils.getOperationUser(request, "createBmlProject" + projectName);
         LOGGER.info("{} begins to create a project {} in bml", username, projectName);
         JsonNode editUserNode = jsonNode.get(EDIT_USERS_STR);
         JsonNode accessUserNode = jsonNode.get(ACCESS_USERS_STR);
@@ -109,7 +111,7 @@ public class BmlProjectRestful {
             @RequestParam(name = "projectName") String projectName,
             @RequestParam(name = "file") List<MultipartFile> files)
             throws ErrorException {
-        String username = SecurityFilter.getLoginUsername(request);
+        String username = ModuleUserUtils.getOperationUser(request, "uploadShareResource");
         Message message;
         try {
             LOGGER.info(
@@ -174,7 +176,8 @@ public class BmlProjectRestful {
             @RequestParam("resourceId") String resourceId,
             @RequestParam("file") MultipartFile file)
             throws ErrorException {
-        String username = SecurityFilter.getLoginUsername(request);
+        String username =
+                ModuleUserUtils.getOperationUser(request, "updateShareResource:" + resourceId);
         if (StringUtils.isEmpty(resourceId) || !resourceService.checkResourceId(resourceId)) {
             LOGGER.error("the error resourceId  is {} ", resourceId);
             throw new BmlServerParaErrorException(
@@ -386,7 +389,7 @@ public class BmlProjectRestful {
     @RequestMapping(path = "attachResourceAndProject", method = RequestMethod.POST)
     public Message attachResourceAndProject(
             HttpServletRequest request, @RequestBody JsonNode jsonNode) throws ErrorException {
-        String username = SecurityFilter.getLoginUsername(request);
+        String username = ModuleUserUtils.getOperationUser(request, "attachResourceAndProject");
         String projectName = jsonNode.get(PROJECT_NAME_STR).textValue();
         String resourceId = jsonNode.get("resourceId").textValue();
         LOGGER.info("begin to attach {}  and {}", projectName, username);
@@ -397,7 +400,7 @@ public class BmlProjectRestful {
     @RequestMapping(path = "updateProjectUsers", method = RequestMethod.POST)
     public Message updateProjectUsers(HttpServletRequest request, @RequestBody JsonNode jsonNode)
             throws ErrorException {
-        String username = SecurityFilter.getLoginUsername(request);
+        String username = ModuleUserUtils.getOperationUser(request, "updateProjectUsers");
         String projectName = jsonNode.get("projectName").textValue();
         LOGGER.info("{} begins to update project users for {}", username, projectName);
         List<String> editUsers = new ArrayList<>();
diff --git a/linkis-public-enhancements/linkis-bml/linkis-bml-server/src/main/java/org/apache/linkis/bml/restful/BmlRestfulApi.java b/linkis-public-enhancements/linkis-bml/linkis-bml-server/src/main/java/org/apache/linkis/bml/restful/BmlRestfulApi.java
index f734a5f..0537245 100644
--- a/linkis-public-enhancements/linkis-bml/linkis-bml-server/src/main/java/org/apache/linkis/bml/restful/BmlRestfulApi.java
+++ b/linkis-public-enhancements/linkis-bml/linkis-bml-server/src/main/java/org/apache/linkis/bml/restful/BmlRestfulApi.java
@@ -36,7 +36,7 @@ import org.apache.linkis.bml.vo.ResourceVO;
 import org.apache.linkis.bml.vo.ResourceVersionsVO;
 import org.apache.linkis.common.exception.ErrorException;
 import org.apache.linkis.server.Message;
-import org.apache.linkis.server.security.SecurityFilter;
+import org.apache.linkis.server.utils.ModuleUserUtils;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringUtils;
@@ -828,7 +828,6 @@ public class BmlRestfulApi {
     @RequestMapping(path = "changeOwner", method = RequestMethod.POST)
     public Message changeOwnerByResourceId(
             HttpServletRequest request, @RequestBody JsonNode jsonNode) throws ErrorException {
-        String username = SecurityFilter.getLoginUsername(request);
         String resourceId = jsonNode.get("resourceId").textValue();
         String oldOwner = jsonNode.get("oldOwner").textValue();
         String newOwner = jsonNode.get("newOwner").textValue();
@@ -839,7 +838,7 @@ public class BmlRestfulApi {
     @RequestMapping(path = "copyResourceToAnotherUser", method = RequestMethod.POST)
     public Message copyResourceToAnotherUser(
             HttpServletRequest request, @RequestBody JsonNode jsonNode) {
-        String username = SecurityFilter.getLoginUsername(request);
+        String username = ModuleUserUtils.getOperationUser(request, "copyResourceToAnotherUser");
         String resourceId = jsonNode.get("resourceId").textValue();
         String anotherUser = jsonNode.get("anotherUser").textValue();
         Message message = null;
@@ -867,7 +866,7 @@ public class BmlRestfulApi {
 
     @RequestMapping(path = "rollbackVersion", method = RequestMethod.POST)
     public Message rollbackVersion(HttpServletRequest request, @RequestBody JsonNode jsonNode) {
-        String username = SecurityFilter.getLoginUsername(request);
+        String username = ModuleUserUtils.getOperationUser(request, "rollbackVersion");
         String resourceId = jsonNode.get("resourceId").textValue();
         String rollbackVersion = jsonNode.get("version").textValue();
         Message message = null;
diff --git a/linkis-public-enhancements/linkis-bml/linkis-bml-server/src/main/java/org/apache/linkis/bml/restful/RestfulUtils.java b/linkis-public-enhancements/linkis-bml/linkis-bml-server/src/main/java/org/apache/linkis/bml/restful/RestfulUtils.java
index 3f4a416..c55779f 100644
--- a/linkis-public-enhancements/linkis-bml/linkis-bml-server/src/main/java/org/apache/linkis/bml/restful/RestfulUtils.java
+++ b/linkis-public-enhancements/linkis-bml/linkis-bml-server/src/main/java/org/apache/linkis/bml/restful/RestfulUtils.java
@@ -20,7 +20,7 @@ package org.apache.linkis.bml.restful;
 import org.apache.linkis.bml.common.BmlAuthorityException;
 import org.apache.linkis.bml.common.Constant;
 import org.apache.linkis.bml.service.ResourceService;
-import org.apache.linkis.server.security.SecurityFilter;
+import org.apache.linkis.server.utils.ModuleUserUtils;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -39,7 +39,7 @@ public class RestfulUtils {
     public static String getUserName(HttpServletRequest request) throws BmlAuthorityException {
         String user;
         try {
-            user = SecurityFilter.getLoginUsername(request);
+            user = ModuleUserUtils.getOperationUser(request);
         } catch (final Exception e) {
             throw new BmlAuthorityException();
         }
diff --git a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/server/restful/CsRestfulParent.java b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/server/restful/CsRestfulParent.java
index d1c73fb..22e5015 100644
--- a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/server/restful/CsRestfulParent.java
+++ b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/server/restful/CsRestfulParent.java
@@ -33,7 +33,7 @@ import org.apache.linkis.cs.server.scheduler.HttpAnswerJob;
 import org.apache.linkis.cs.server.scheduler.RestJobBuilder;
 import org.apache.linkis.cs.server.util.CsUtils;
 import org.apache.linkis.server.Message;
-import org.apache.linkis.server.security.SecurityFilter;
+import org.apache.linkis.server.utils.ModuleUserUtils;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -51,7 +51,7 @@ public interface CsRestfulParent {
         // TODO: 2020/3/3 单例
         HttpAnswerJob job = (HttpAnswerJob) new RestJobBuilder().build(getServiceType());
         HttpRequestProtocol protocol = job.getRequestProtocol();
-        protocol.setUsername(SecurityFilter.getLoginUsername(req));
+        protocol.setUsername(ModuleUserUtils.getOperationUser(req));
         protocol.setServiceMethod(method);
         protocol.setRequestObjects(objects);
         getScheduler().submit(job);
diff --git a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/test/java/org/apache/linkis/cs/server/CsRestfulParent.java b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/test/java/org/apache/linkis/cs/server/CsRestfulParent.java
index 4faa790..8f34b6a 100644
--- a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/test/java/org/apache/linkis/cs/server/CsRestfulParent.java
+++ b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/test/java/org/apache/linkis/cs/server/CsRestfulParent.java
@@ -26,7 +26,7 @@ import org.apache.linkis.cs.server.scheduler.CsScheduler;
 import org.apache.linkis.cs.server.scheduler.HttpAnswerJob;
 import org.apache.linkis.cs.server.scheduler.RestJobBuilder;
 import org.apache.linkis.server.Message;
-import org.apache.linkis.server.security.SecurityFilter;
+import org.apache.linkis.server.utils.ModuleUserUtils;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -37,7 +37,7 @@ public interface CsRestfulParent {
             throws InterruptedException {
         HttpAnswerJob job = (HttpAnswerJob) new RestJobBuilder().build(getServiceType());
         HttpRequestProtocol protocol = job.getRequestProtocol();
-        protocol.setUsername(SecurityFilter.getLoginUsername(req));
+        protocol.setUsername(ModuleUserUtils.getOperationUser(req));
         protocol.setServiceMethod(method);
         protocol.setRequestObjects(objects);
         getScheduler().submit(job);
diff --git a/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/restful/api/DataSourceRestfulApi.java b/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/restful/api/DataSourceRestfulApi.java
index c5f1e04..2b0fc99 100644
--- a/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/restful/api/DataSourceRestfulApi.java
+++ b/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/restful/api/DataSourceRestfulApi.java
@@ -20,7 +20,7 @@ package org.apache.linkis.metadata.restful.api;
 import org.apache.linkis.metadata.restful.remote.DataSourceRestfulRemote;
 import org.apache.linkis.metadata.service.DataSourceService;
 import org.apache.linkis.server.Message;
-import org.apache.linkis.server.security.SecurityFilter;
+import org.apache.linkis.server.utils.ModuleUserUtils;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
@@ -46,7 +46,7 @@ public class DataSourceRestfulApi implements DataSourceRestfulRemote {
     @Override
     @RequestMapping(path = "dbs", method = RequestMethod.GET)
     public Message queryDatabaseInfo(HttpServletRequest req) {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "get dbs");
         try {
             JsonNode dbs = dataSourceService.getDbs(userName);
             return Message.ok("").data("dbs", dbs);
@@ -59,7 +59,7 @@ public class DataSourceRestfulApi implements DataSourceRestfulRemote {
     @Override
     @RequestMapping(path = "all", method = RequestMethod.GET)
     public Message queryDbsWithTables(HttpServletRequest req) {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "get all db and tables");
         try {
             JsonNode dbs = dataSourceService.getDbsWithTables(userName);
             return Message.ok("").data("dbs", dbs);
@@ -74,7 +74,7 @@ public class DataSourceRestfulApi implements DataSourceRestfulRemote {
     public Message queryTables(
             @RequestParam(value = "database", required = false) String database,
             HttpServletRequest req) {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "get tables");
         try {
             JsonNode tables = dataSourceService.queryTables(database, userName);
             return Message.ok("").data("tables", tables);
@@ -90,7 +90,7 @@ public class DataSourceRestfulApi implements DataSourceRestfulRemote {
             @RequestParam(value = "database", required = false) String database,
             @RequestParam(value = "table", required = false) String table,
             HttpServletRequest req) {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "get columns of table " + table);
         try {
             JsonNode columns = dataSourceService.queryTableMeta(database, table, userName);
             return Message.ok("").data("columns", columns);
@@ -107,7 +107,7 @@ public class DataSourceRestfulApi implements DataSourceRestfulRemote {
             @RequestParam(value = "table", required = false) String table,
             @RequestParam(value = "partition", required = false) String partition,
             HttpServletRequest req) {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "get size ");
         try {
             JsonNode sizeNode;
             if (StringUtils.isBlank(partition)) {
@@ -128,7 +128,7 @@ public class DataSourceRestfulApi implements DataSourceRestfulRemote {
             @RequestParam(value = "database", required = false) String database,
             @RequestParam(value = "table", required = false) String table,
             HttpServletRequest req) {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "get partitions of " + table);
         try {
             JsonNode partitionNode = dataSourceService.getPartitions(database, table, userName);
             return Message.ok("").data("partitionInfo", partitionNode);
diff --git a/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/restful/api/MdqTableRestfulApi.java b/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/restful/api/MdqTableRestfulApi.java
index f7d1f67..f2abdd6 100644
--- a/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/restful/api/MdqTableRestfulApi.java
+++ b/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/restful/api/MdqTableRestfulApi.java
@@ -28,7 +28,7 @@ import org.apache.linkis.metadata.domain.mdq.vo.MdqTableStatisticInfoVO;
 import org.apache.linkis.metadata.exception.MdqIllegalParamException;
 import org.apache.linkis.metadata.service.MdqService;
 import org.apache.linkis.server.Message;
-import org.apache.linkis.server.security.SecurityFilter;
+import org.apache.linkis.server.utils.ModuleUserUtils;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -66,7 +66,7 @@ public class MdqTableRestfulApi {
             @RequestParam(value = "database", required = false) String database,
             @RequestParam(value = "tableName", required = false) String tableName,
             HttpServletRequest req) {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "getTableBaseInfo " + tableName);
         MdqTableBaseInfoVO tableBaseInfo;
         if (mdqService.isExistInMdq(database, tableName, userName)) {
             tableBaseInfo = mdqService.getTableBaseInfoFromMdq(database, tableName, userName);
@@ -81,7 +81,7 @@ public class MdqTableRestfulApi {
             @RequestParam(value = "database", required = false) String database,
             @RequestParam(value = "tableName", required = false) String tableName,
             HttpServletRequest req) {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "getTableFieldsInfo " + tableName);
         List<MdqTableFieldsInfoVO> tableFieldsInfo;
         if (mdqService.isExistInMdq(database, tableName, userName)) {
             tableFieldsInfo = mdqService.getTableFieldsInfoFromMdq(database, tableName, userName);
@@ -100,7 +100,8 @@ public class MdqTableRestfulApi {
             @RequestParam(value = "partitionSort", defaultValue = "desc") String partitionSort,
             HttpServletRequest req)
             throws IOException {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName =
+                ModuleUserUtils.getOperationUser(req, "getTableStatisticInfo " + tableName);
         MdqTableStatisticInfoVO tableStatisticInfo =
                 mdqService.getTableStatisticInfo(database, tableName, userName);
         int totalSize = 0;
@@ -156,7 +157,8 @@ public class MdqTableRestfulApi {
             @RequestParam(value = "partitionPath", required = false) String partitionName,
             HttpServletRequest req)
             throws IOException, MdqIllegalParamException {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName =
+                ModuleUserUtils.getOperationUser(req, "getPartitionStatisticInfo " + tableName);
         MdqTablePartitionStatisticInfoVO partition =
                 mdqService.getPartitionStatisticInfo(database, tableName, userName, partitionName);
         return Message.ok().data("partitionStatisticInfo", partition);
@@ -173,7 +175,7 @@ public class MdqTableRestfulApi {
     @RequestMapping(path = "persistTable", method = RequestMethod.POST)
     public Message persistTable(HttpServletRequest req, @RequestBody JsonNode json)
             throws IOException {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "persistTable ");
         MdqTableBO table = mapper.treeToValue(json.get("table"), MdqTableBO.class);
         mdqService.persistTable(table, userName);
         return Message.ok();
@@ -181,7 +183,7 @@ public class MdqTableRestfulApi {
 
     @RequestMapping(path = "displaysql", method = RequestMethod.POST)
     public Message displaySql(HttpServletRequest request, @RequestBody JsonNode json) {
-        String userName = SecurityFilter.getLoginUsername(request);
+        String userName = ModuleUserUtils.getOperationUser(request, "displaysql ");
         logger.info("display sql for user {} ", userName);
         StringBuilder sb = new StringBuilder();
         String retSql = "";
diff --git a/linkis-public-enhancements/linkis-publicservice/linkis-configuration/src/main/java/org/apache/linkis/configuration/restful/api/ConfigurationRestfulApi.java b/linkis-public-enhancements/linkis-publicservice/linkis-configuration/src/main/java/org/apache/linkis/configuration/restful/api/ConfigurationRestfulApi.java
index afc6974..2d2055c 100644
--- a/linkis-public-enhancements/linkis-publicservice/linkis-configuration/src/main/java/org/apache/linkis/configuration/restful/api/ConfigurationRestfulApi.java
+++ b/linkis-public-enhancements/linkis-publicservice/linkis-configuration/src/main/java/org/apache/linkis/configuration/restful/api/ConfigurationRestfulApi.java
@@ -30,7 +30,7 @@ import org.apache.linkis.manager.label.entity.engine.UserCreatorLabel;
 import org.apache.linkis.manager.label.utils.LabelUtils;
 import org.apache.linkis.server.BDPJettyServerHelper;
 import org.apache.linkis.server.Message;
-import org.apache.linkis.server.security.SecurityFilter;
+import org.apache.linkis.server.utils.ModuleUserUtils;
 
 import org.apache.commons.lang.StringUtils;
 
@@ -74,7 +74,6 @@ public class ConfigurationRestfulApi {
             @RequestParam(value = "token", required = false) String token,
             @RequestParam(value = "keyJson", required = false) String keyJson)
             throws ConfigurationException {
-        String username = SecurityFilter.getLoginUsername(req);
         if (StringUtils.isBlank(engineType)
                 || StringUtils.isBlank(version)
                 || StringUtils.isBlank(token)) {
@@ -168,7 +167,7 @@ public class ConfigurationRestfulApi {
             @RequestParam(value = "version", required = false) String version,
             @RequestParam(value = "creator", required = false) String creator)
             throws ConfigurationException {
-        String username = SecurityFilter.getLoginUsername(req);
+        String username = ModuleUserUtils.getOperationUser(req, "getFullTreesByAppName");
         if (creator != null && (creator.equals("通用设置") || creator.equals("全局设置"))) {
             engineType = "*";
             version = "*";
@@ -184,7 +183,6 @@ public class ConfigurationRestfulApi {
 
     @RequestMapping(path = "/getCategory", method = RequestMethod.GET)
     public Message getCategory(HttpServletRequest req) {
-        String username = SecurityFilter.getLoginUsername(req);
         List<CategoryLabelVo> categoryLabelList = categoryService.getAllCategory();
         return Message.ok().data("Category", categoryLabelList);
     }
@@ -192,7 +190,7 @@ public class ConfigurationRestfulApi {
     @RequestMapping(path = "/createFirstCategory", method = RequestMethod.POST)
     public Message createFirstCategory(HttpServletRequest request, @RequestBody JsonNode jsonNode)
             throws ConfigurationException {
-        String username = SecurityFilter.getLoginUsername(request);
+        String username = ModuleUserUtils.getOperationUser(request, "createFirstCategory");
         checkAdmin(username);
         String categoryName = jsonNode.get("categoryName").asText();
         String description = jsonNode.get("description").asText();
@@ -209,7 +207,7 @@ public class ConfigurationRestfulApi {
     @RequestMapping(path = "/deleteCategory", method = RequestMethod.POST)
     public Message deleteCategory(HttpServletRequest request, @RequestBody JsonNode jsonNode)
             throws ConfigurationException {
-        String username = SecurityFilter.getLoginUsername(request);
+        String username = ModuleUserUtils.getOperationUser(request, "deleteCategory");
         checkAdmin(username);
         Integer categoryId = jsonNode.get("categoryId").asInt();
         categoryService.deleteCategory(categoryId);
@@ -219,7 +217,6 @@ public class ConfigurationRestfulApi {
     @RequestMapping(path = "/createSecondCategory", method = RequestMethod.POST)
     public Message createSecondCategory(HttpServletRequest request, @RequestBody JsonNode jsonNode)
             throws ConfigurationException {
-        String username = SecurityFilter.getLoginUsername(request);
         Integer categoryId = jsonNode.get("categoryId").asInt();
         String engineType = jsonNode.get("engineType").asText();
         String version = jsonNode.get("version").asText();
@@ -246,7 +243,7 @@ public class ConfigurationRestfulApi {
         if (creator != null && (creator.equals("通用设置") || creator.equals("全局设置"))) {
             creator = "*";
         }
-        String username = SecurityFilter.getLoginUsername(req);
+        String username = ModuleUserUtils.getOperationUser(req, "saveFullTree");
         ArrayList<ConfigValue> createList = new ArrayList<>();
         ArrayList<ConfigValue> updateList = new ArrayList<>();
         for (Object o : fullTrees) {
@@ -285,7 +282,6 @@ public class ConfigurationRestfulApi {
     @RequestMapping(path = "/updateCategoryInfo", method = RequestMethod.POST)
     public Message updateCategoryInfo(HttpServletRequest request, @RequestBody JsonNode jsonNode)
             throws ConfigurationException {
-        String username = SecurityFilter.getLoginUsername(request);
         String description = null;
         Integer categoryId = null;
         try {
diff --git a/linkis-public-enhancements/linkis-publicservice/linkis-instance-label/linkis-instance-label-server/src/main/java/org/apache/linkis/instance/label/restful/InstanceRestful.java b/linkis-public-enhancements/linkis-publicservice/linkis-instance-label/linkis-instance-label-server/src/main/java/org/apache/linkis/instance/label/restful/InstanceRestful.java
index e33b5ea..2a42def 100644
--- a/linkis-public-enhancements/linkis-publicservice/linkis-instance-label/linkis-instance-label-server/src/main/java/org/apache/linkis/instance/label/restful/InstanceRestful.java
+++ b/linkis-public-enhancements/linkis-publicservice/linkis-instance-label/linkis-instance-label-server/src/main/java/org/apache/linkis/instance/label/restful/InstanceRestful.java
@@ -29,7 +29,7 @@ import org.apache.linkis.manager.label.entity.Label;
 import org.apache.linkis.manager.label.entity.UserModifiable;
 import org.apache.linkis.manager.label.utils.LabelUtils;
 import org.apache.linkis.server.Message;
-import org.apache.linkis.server.security.SecurityFilter;
+import org.apache.linkis.server.utils.ModuleUserUtils;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
@@ -60,7 +60,6 @@ public class InstanceRestful {
 
     @RequestMapping(path = "/allInstance", method = RequestMethod.GET)
     public Message listAllInstanceWithLabel(HttpServletRequest req) {
-        String username = SecurityFilter.getLoginUsername(req);
         logger.info("start to get all instance informations.....");
         List<InstanceInfo> instances = insLabelService.listAllInstanceWithLabel();
         insLabelService.markInstanceLabel(instances);
@@ -72,7 +71,7 @@ public class InstanceRestful {
     @RequestMapping(path = "/instanceLabel", method = RequestMethod.PUT)
     public Message upDateInstanceLabel(HttpServletRequest req, @RequestBody JsonNode jsonNode)
             throws Exception {
-        String username = SecurityFilter.getLoginUsername(req);
+        String username = ModuleUserUtils.getOperationUser(req);
         String[] adminArray = InstanceConfigration.GOVERNANCE_STATION_ADMIN().getValue().split(",");
         if (adminArray != null && !Arrays.asList(adminArray).contains(username)) {
             throw new Exception("only admin can modify instance label(只有管理员才能修改标签)");
diff --git a/linkis-public-enhancements/linkis-publicservice/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/restful/api/QueryRestfulApi.java b/linkis-public-enhancements/linkis-publicservice/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/restful/api/QueryRestfulApi.java
index 0a4901c..b049d89 100644
--- a/linkis-public-enhancements/linkis-publicservice/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/restful/api/QueryRestfulApi.java
+++ b/linkis-public-enhancements/linkis-publicservice/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/restful/api/QueryRestfulApi.java
@@ -27,7 +27,7 @@ import org.apache.linkis.jobhistory.service.JobHistoryQueryService;
 import org.apache.linkis.jobhistory.util.QueryUtils;
 import org.apache.linkis.protocol.constants.TaskConstant;
 import org.apache.linkis.server.Message;
-import org.apache.linkis.server.security.SecurityFilter;
+import org.apache.linkis.server.utils.ModuleUserUtils;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.StringUtils;
@@ -55,7 +55,7 @@ public class QueryRestfulApi {
 
     @RequestMapping(path = "/governanceStationAdmin", method = RequestMethod.GET)
     public Message governanceStationAdmin(HttpServletRequest req) {
-        String username = SecurityFilter.getLoginUsername(req);
+        String username = ModuleUserUtils.getOperationUser(req, "governanceStationAdmin");
         String[] split = JobhistoryConfiguration.GOVERNANCE_STATION_ADMIN().getValue().split(",");
         boolean match = Arrays.stream(split).anyMatch(username::equalsIgnoreCase);
         return Message.ok().data("admin", match);
@@ -63,7 +63,7 @@ public class QueryRestfulApi {
 
     @RequestMapping(path = "/{id}/get", method = RequestMethod.GET)
     public Message getTaskByID(HttpServletRequest req, @PathVariable("id") Long jobId) {
-        String username = SecurityFilter.getLoginUsername(req);
+        String username = ModuleUserUtils.getOperationUser(req, "get task " + jobId);
         if (QueryUtils.isJobHistoryAdmin(username)
                 || !JobhistoryConfiguration.JOB_HISTORY_SAFE_TRIGGER()) {
             username = null;
@@ -112,7 +112,7 @@ public class QueryRestfulApi {
             @RequestParam(value = "proxyUser", required = false) String proxyUser,
             @RequestParam(value = "isAdminView", required = false) Boolean isAdminView)
             throws IOException, QueryException {
-        String username = SecurityFilter.getLoginUsername(req);
+        String username = ModuleUserUtils.getOperationUser(req, "list task ");
         if (StringUtils.isEmpty(status)) {
             status = null;
         }
diff --git a/linkis-public-enhancements/linkis-publicservice/linkis-script-dev/linkis-storage-script-dev-server/src/main/java/org/apache/linkis/filesystem/restful/api/BMLFsRestfulApi.java b/linkis-public-enhancements/linkis-publicservice/linkis-script-dev/linkis-storage-script-dev-server/src/main/java/org/apache/linkis/filesystem/restful/api/BMLFsRestfulApi.java
index a9f6a2c..57da63b 100644
--- a/linkis-public-enhancements/linkis-publicservice/linkis-script-dev/linkis-storage-script-dev-server/src/main/java/org/apache/linkis/filesystem/restful/api/BMLFsRestfulApi.java
+++ b/linkis-public-enhancements/linkis-publicservice/linkis-script-dev/linkis-storage-script-dev-server/src/main/java/org/apache/linkis/filesystem/restful/api/BMLFsRestfulApi.java
@@ -22,7 +22,7 @@ import org.apache.linkis.filesystem.bml.BMLHelper;
 import org.apache.linkis.filesystem.exception.WorkSpaceException;
 import org.apache.linkis.filesystem.exception.WorkspaceExceptionManager;
 import org.apache.linkis.server.Message;
-import org.apache.linkis.server.security.SecurityFilter;
+import org.apache.linkis.server.utils.ModuleUserUtils;
 import org.apache.linkis.storage.script.*;
 import org.apache.linkis.storage.script.writer.StorageScriptFsWriter;
 import org.apache.linkis.storage.source.FileSource;
@@ -59,7 +59,7 @@ public class BMLFsRestfulApi {
             @RequestParam(value = "projectName", required = false) String projectName,
             @RequestParam(value = "fileName", defaultValue = "test.sql") String fileName)
             throws IOException, WorkSpaceException {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "openScriptFromBML");
         Map<String, Object> query = bmlHelper.query(userName, resourceId, version);
         InputStream inputStream = (InputStream) query.get("stream");
         try (FileSource fileSource =
@@ -91,7 +91,7 @@ public class BMLFsRestfulApi {
             @RequestParam(value = "creator", required = false) String creator,
             @RequestParam(value = "fileName", defaultValue = "test.sql") String fileName)
             throws IOException, WorkSpaceException {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "openScriptFromBML");
         if (!StringUtils.isEmpty(creator)) {
             userName = creator;
         }
@@ -123,13 +123,14 @@ public class BMLFsRestfulApi {
     @RequestMapping(path = "/saveScriptToBML", method = RequestMethod.POST)
     public Message saveScriptToBML(HttpServletRequest req, @RequestBody Map<String, Object> json)
             throws IOException {
-        String userName = SecurityFilter.getLoginUsername(req);
+
         String scriptContent = (String) json.get("scriptContent");
         Map<String, Object> params = (Map<String, Object>) json.get("metadata");
         String fileName = (String) json.get("fileName");
         String resourceId = (String) json.get("resourceId");
         String creator = (String) json.get("creator");
         String projectName = (String) json.get("projectName");
+        String userName = ModuleUserUtils.getOperationUser(req, "saveScriptToBML" + fileName);
         ScriptFsWriter writer =
                 StorageScriptFsWriter.getScriptFsWriter(
                         new FsPath(fileName), Consts.UTF_8.toString(), null);
diff --git a/linkis-public-enhancements/linkis-publicservice/linkis-script-dev/linkis-storage-script-dev-server/src/main/java/org/apache/linkis/filesystem/restful/api/FsRestfulApi.java b/linkis-public-enhancements/linkis-publicservice/linkis-script-dev/linkis-storage-script-dev-server/src/main/java/org/apache/linkis/filesystem/restful/api/FsRestfulApi.java
index 0856250..1138aa9 100644
--- a/linkis-public-enhancements/linkis-publicservice/linkis-script-dev/linkis-storage-script-dev-server/src/main/java/org/apache/linkis/filesystem/restful/api/FsRestfulApi.java
+++ b/linkis-public-enhancements/linkis-publicservice/linkis-script-dev/linkis-storage-script-dev-server/src/main/java/org/apache/linkis/filesystem/restful/api/FsRestfulApi.java
@@ -28,7 +28,7 @@ import org.apache.linkis.filesystem.service.FsService;
 import org.apache.linkis.filesystem.util.WorkspaceUtil;
 import org.apache.linkis.filesystem.validator.PathValidator$;
 import org.apache.linkis.server.Message;
-import org.apache.linkis.server.security.SecurityFilter;
+import org.apache.linkis.server.utils.ModuleUserUtils;
 import org.apache.linkis.storage.csv.CSVFsWriter;
 import org.apache.linkis.storage.domain.FsPathListWithError;
 import org.apache.linkis.storage.excel.ExcelFsWriter;
@@ -113,7 +113,7 @@ public class FsRestfulApi {
             HttpServletRequest req,
             @RequestParam(value = "pathType", required = false) String pathType)
             throws IOException, WorkSpaceException {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "getUserRootPath");
         String hdfsUserRootPathPrefix =
                 WorkspaceUtil.suffixTuning(HDFS_USER_ROOT_PATH_PREFIX.getValue());
         String hdfsUserRootPathSuffix = HDFS_USER_ROOT_PATH_SUFFIX.getValue();
@@ -138,8 +138,9 @@ public class FsRestfulApi {
     @RequestMapping(path = "/createNewDir", method = RequestMethod.POST)
     public Message createNewDir(HttpServletRequest req, @RequestBody JsonNode json)
             throws IOException, WorkSpaceException {
-        String userName = SecurityFilter.getLoginUsername(req);
+
         String path = json.get("path").textValue();
+        String userName = ModuleUserUtils.getOperationUser(req, "createNewDir " + path);
         if (StringUtils.isEmpty(path)) {
             throw WorkspaceExceptionManager.createException(80004, path);
         }
@@ -159,8 +160,8 @@ public class FsRestfulApi {
     @RequestMapping(path = "/createNewFile", method = RequestMethod.POST)
     public Message createNewFile(HttpServletRequest req, @RequestBody JsonNode json)
             throws IOException, WorkSpaceException {
-        String userName = SecurityFilter.getLoginUsername(req);
         String path = json.get("path").textValue();
+        String userName = ModuleUserUtils.getOperationUser(req, "createNewFile " + path);
         if (StringUtils.isEmpty(path)) {
             throw WorkspaceExceptionManager.createException(80004, path);
         }
@@ -182,7 +183,7 @@ public class FsRestfulApi {
             throws IOException, WorkSpaceException {
         String oldDest = json.get("oldDest").textValue();
         String newDest = json.get("newDest").textValue();
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "rename " + newDest);
         if (FILESYSTEM_PATH_CHECK_TRIGGER.getValue()) {
             LOGGER.info(
                     String.format(
@@ -218,10 +219,11 @@ public class FsRestfulApi {
             @RequestParam("path") String path,
             @RequestParam("file") List<MultipartFile> files)
             throws IOException, WorkSpaceException {
-        String userName = SecurityFilter.getLoginUsername(req);
+
         if (StringUtils.isEmpty(path)) {
             throw WorkspaceExceptionManager.createException(80004, path);
         }
+        String userName = ModuleUserUtils.getOperationUser(req, "upload " + path);
         if (!checkIsUsersDirectory(path, userName)) {
             throw WorkspaceExceptionManager.createException(80010, path);
         }
@@ -244,8 +246,9 @@ public class FsRestfulApi {
     @RequestMapping(path = "/deleteDirOrFile", method = RequestMethod.POST)
     public Message deleteDirOrFile(HttpServletRequest req, @RequestBody JsonNode json)
             throws IOException, WorkSpaceException {
-        String userName = SecurityFilter.getLoginUsername(req);
+
         String path = json.get("path").textValue();
+        String userName = ModuleUserUtils.getOperationUser(req, "deleteDirOrFile " + path);
         if (StringUtils.isEmpty(path)) {
             throw WorkspaceExceptionManager.createException(80004, path);
         }
@@ -269,10 +272,11 @@ public class FsRestfulApi {
     public Message getDirFileTrees(
             HttpServletRequest req, @RequestParam(value = "path", required = false) String path)
             throws IOException, WorkSpaceException {
-        String userName = SecurityFilter.getLoginUsername(req);
+
         if (StringUtils.isEmpty(path)) {
             throw WorkspaceExceptionManager.createException(80004, path);
         }
+        String userName = ModuleUserUtils.getOperationUser(req, "getDirFileTrees " + path);
         if (!checkIsUsersDirectory(path, userName)) {
             throw WorkspaceExceptionManager.createException(80010, path);
         }
@@ -324,8 +328,8 @@ public class FsRestfulApi {
         PrintWriter writer = null;
         try {
             String charset = json.get("charset");
-            String userName = SecurityFilter.getLoginUsername(req);
             String path = json.get("path");
+            String userName = ModuleUserUtils.getOperationUser(req, "download " + path);
             if (StringUtils.isEmpty(path)) {
                 throw WorkspaceExceptionManager.createException(80004, path);
             }
@@ -376,7 +380,7 @@ public class FsRestfulApi {
     public Message isExist(
             HttpServletRequest req, @RequestParam(value = "path", required = false) String path)
             throws IOException, WorkSpaceException {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "isExist " + path);
         FsPath fsPath = new FsPath(path);
         if (StringUtils.isEmpty(path)) {
             throw WorkspaceExceptionManager.createException(80004, path);
@@ -394,10 +398,10 @@ public class FsRestfulApi {
             @RequestParam(value = "path", required = false) String path,
             @RequestParam(value = "pageSize", defaultValue = "5000") Integer pageSize)
             throws IOException, WorkSpaceException {
-        String userName = SecurityFilter.getLoginUsername(req);
         if (StringUtils.isEmpty(path)) {
             throw WorkspaceExceptionManager.createException(80004, path);
         }
+        String userName = ModuleUserUtils.getOperationUser(req, "fileInfo " + path);
         FsPath fsPath = new FsPath(path);
         FileSystem fileSystem = fsService.getFileSystem(userName, fsPath);
         // Throws an exception if the file does not have read access(如果文件没读权限,抛出异常)
@@ -433,11 +437,12 @@ public class FsRestfulApi {
             @RequestParam(value = "pageSize", defaultValue = "5000") Integer pageSize,
             @RequestParam(value = "charset", defaultValue = "utf-8") String charset)
             throws IOException, WorkSpaceException {
-        String userName = SecurityFilter.getLoginUsername(req);
+
         Message message = Message.ok();
         if (StringUtils.isEmpty(path)) {
             throw WorkspaceExceptionManager.createException(80004, path);
         }
+        String userName = ModuleUserUtils.getOperationUser(req, "openFile " + path);
         if (!checkIsUsersDirectory(path, userName)) {
             throw WorkspaceExceptionManager.createException(80010, path);
         }
@@ -473,8 +478,8 @@ public class FsRestfulApi {
     @RequestMapping(path = "/saveScript", method = RequestMethod.POST)
     public Message saveScript(HttpServletRequest req, @RequestBody Map<String, Object> json)
             throws IOException, WorkSpaceException {
-        String userName = SecurityFilter.getLoginUsername(req);
         String path = (String) json.get("path");
+        String userName = ModuleUserUtils.getOperationUser(req, "saveScript " + path);
         if (StringUtils.isEmpty(path)) {
             throw WorkspaceExceptionManager.createException(80004, path);
         }
@@ -530,7 +535,7 @@ public class FsRestfulApi {
         PrintWriter writer = null;
         FileSource fileSource = null;
         try {
-            String userName = SecurityFilter.getLoginUsername(req);
+            String userName = ModuleUserUtils.getOperationUser(req, "resultsetToExcel " + path);
             FsPath fsPath = new FsPath(path);
             FileSystem fileSystem = fsService.getFileSystem(userName, fsPath);
             boolean isLimitDownloadSize = RESULT_SET_DOWNLOAD_IS_LIMIT.getValue();
@@ -619,7 +624,7 @@ public class FsRestfulApi {
         PrintWriter writer = null;
         FileSource fileSource = null;
         try {
-            String userName = SecurityFilter.getLoginUsername(req);
+            String userName = ModuleUserUtils.getOperationUser(req, "resultsetsToExcel " + path);
             FsPath fsPath = new FsPath(path);
             FileSystem fileSystem = fsService.getFileSystem(userName, fsPath);
             if (StringUtils.isEmpty(path)) {
@@ -688,10 +693,10 @@ public class FsRestfulApi {
             @RequestParam(value = "quote", defaultValue = "\"") String quote,
             @RequestParam(value = "escapeQuotes", defaultValue = "false") Boolean escapeQuotes)
             throws Exception {
-        String userName = SecurityFilter.getLoginUsername(req);
         if (StringUtils.isEmpty(path)) {
             throw WorkspaceExceptionManager.createException(80004, path);
         }
+        String userName = ModuleUserUtils.getOperationUser(req, "formate " + path);
         if (!checkIsUsersDirectory(path, userName)) {
             throw WorkspaceExceptionManager.createException(80010, path);
         }
@@ -747,10 +752,10 @@ public class FsRestfulApi {
             @RequestParam(value = "path", required = false) String path,
             @RequestParam(value = "proxyUser", required = false) String proxyUser)
             throws IOException, WorkSpaceException {
-        String userName = SecurityFilter.getLoginUsername(req);
         if (StringUtils.isEmpty(path)) {
             throw WorkspaceExceptionManager.createException(80004, path);
         }
+        String userName = ModuleUserUtils.getOperationUser(req, "openLog " + path);
         if (proxyUser != null && WorkspaceUtil.isLogAdmin(userName)) {
             userName = proxyUser;
         }
diff --git a/linkis-public-enhancements/linkis-publicservice/linkis-script-dev/linkis-storage-script-dev-server/src/main/scala/org/apache/linkis/filesystem/validator/PathValidator.scala b/linkis-public-enhancements/linkis-publicservice/linkis-script-dev/linkis-storage-script-dev-server/src/main/scala/org/apache/linkis/filesystem/validator/PathValidator.scala
index 3062991..6d12328 100644
--- a/linkis-public-enhancements/linkis-publicservice/linkis-script-dev/linkis-storage-script-dev-server/src/main/scala/org/apache/linkis/filesystem/validator/PathValidator.scala
+++ b/linkis-public-enhancements/linkis-publicservice/linkis-script-dev/linkis-storage-script-dev-server/src/main/scala/org/apache/linkis/filesystem/validator/PathValidator.scala
@@ -18,7 +18,6 @@
 package org.apache.linkis.filesystem.validator
 
 import java.io.File
-
 import com.fasterxml.jackson.databind.JsonNode
 import org.apache.linkis.common.utils.Logging
 import org.apache.linkis.filesystem.conf.WorkSpaceConfiguration._
@@ -27,7 +26,9 @@ import org.apache.linkis.filesystem.util.WorkspaceUtil
 import org.apache.linkis.server
 import org.apache.linkis.server.{Message, catchIt}
 import org.apache.linkis.server.security.SecurityFilter
+import org.apache.linkis.server.utils.ModuleUserUtils
 import org.apache.linkis.storage.utils.StorageUtils
+
 import javax.servlet.http.{HttpServletRequest, HttpServletResponse}
 import org.aspectj.lang.ProceedingJoinPoint
 import org.aspectj.lang.annotation.{Around, Aspect, Pointcut}
@@ -68,7 +69,7 @@ class PathValidator extends Logging {
       case index: Int => {
         val proxyUser = paramNames.indexOf("proxyUser")
         if (proxyUser == -1 || StringUtils.isEmpty(args(proxyUser))) {
-          username = SecurityFilter.getLoginUsername(args(index).asInstanceOf[HttpServletRequest])
+          username = ModuleUserUtils.getOperationUser(args(index).asInstanceOf[HttpServletRequest])
         } else {
           //增加proxyuser的判断
           username = args(proxyUser).toString
diff --git a/linkis-public-enhancements/linkis-publicservice/linkis-udf/linkis-udf-service/src/main/java/org/apache/linkis/udf/api/UDFApi.java b/linkis-public-enhancements/linkis-publicservice/linkis-udf/linkis-udf-service/src/main/java/org/apache/linkis/udf/api/UDFApi.java
index 0b94a47..155bf7e 100644
--- a/linkis-public-enhancements/linkis-publicservice/linkis-udf/linkis-udf-service/src/main/java/org/apache/linkis/udf/api/UDFApi.java
+++ b/linkis-public-enhancements/linkis-publicservice/linkis-udf/linkis-udf-service/src/main/java/org/apache/linkis/udf/api/UDFApi.java
@@ -18,7 +18,7 @@
 package org.apache.linkis.udf.api;
 
 import org.apache.linkis.server.Message;
-import org.apache.linkis.server.security.SecurityFilter;
+import org.apache.linkis.server.utils.ModuleUserUtils;
 import org.apache.linkis.udf.entity.UDFInfo;
 import org.apache.linkis.udf.entity.UDFTree;
 import org.apache.linkis.udf.excepiton.UDFException;
@@ -73,7 +73,7 @@ public class UDFApi {
     public Message allUDF(HttpServletRequest req, String jsonString) {
         Message message = null;
         try {
-            String userName = SecurityFilter.getLoginUsername(req);
+            String userName = ModuleUserUtils.getOperationUser(req, "get all udfs ");
             if (!StringUtils.isEmpty(jsonString)) {
                 Map<String, Object> json = mapper.reader(Map.class).readValue(jsonString);
                 String type = (String) json.getOrDefault("type", "self");
@@ -143,7 +143,7 @@ public class UDFApi {
     public Message listUDF(HttpServletRequest req, @RequestBody Map<String, Object> json) {
         Message message = null;
         try {
-            String userName = SecurityFilter.getLoginUsername(req);
+            String userName = ModuleUserUtils.getOperationUser(req, "list udfs ");
             String type = (String) json.getOrDefault("type", SELF_USER);
             Long treeId = ((Integer) json.getOrDefault("treeId", -1)).longValue();
             String category = ((String) json.getOrDefault("category", ALL));
@@ -162,7 +162,7 @@ public class UDFApi {
     public Message addUDF(HttpServletRequest req, @RequestBody JsonNode json) {
         Message message = null;
         try {
-            String userName = SecurityFilter.getLoginUsername(req);
+            String userName = ModuleUserUtils.getOperationUser(req, "add udf ");
             UDFAddVo udfvo = mapper.treeToValue(json.get("udfAddVo"), UDFAddVo.class);
             udfvo.setCreateUser(userName);
             udfvo.setCreateTime(new Date());
@@ -181,7 +181,7 @@ public class UDFApi {
     public Message updateUDF(HttpServletRequest req, @RequestBody JsonNode json) {
         Message message = null;
         try {
-            String userName = SecurityFilter.getLoginUsername(req);
+            String userName = ModuleUserUtils.getOperationUser(req, "update udf ");
             UDFUpdateVo udfUpdateVo =
                     mapper.treeToValue(json.get("udfUpdateVo"), UDFUpdateVo.class);
             udfService.updateUDF(udfUpdateVo, userName);
@@ -196,7 +196,7 @@ public class UDFApi {
 
     @RequestMapping(path = "delete/{id}", method = RequestMethod.POST)
     public Message deleteUDF(HttpServletRequest req, @PathVariable("id") Long id) {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "delete udf " + id);
         Message message = null;
         try {
             verifyOperationUser(userName, id);
@@ -214,7 +214,7 @@ public class UDFApi {
             HttpServletRequest req,
             @RequestParam(value = "udfId", required = false) Long udfId,
             @RequestParam(value = "isLoad", required = false) Boolean isLoad) {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "isload ");
         Message message = null;
         try {
             if (isLoad) {
@@ -232,7 +232,8 @@ public class UDFApi {
 
     @RequestMapping(path = "/tree/add", method = RequestMethod.POST)
     public Message addTree(HttpServletRequest req, @RequestBody UDFTree udfTree) {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName =
+                ModuleUserUtils.getOperationUser(req, "add udf tree " + udfTree.getName());
         Message message = null;
         try {
             udfTree.setCreateTime(new Date());
@@ -251,7 +252,8 @@ public class UDFApi {
 
     @RequestMapping(path = "/tree/update", method = RequestMethod.POST)
     public Message updateTree(HttpServletRequest req, @RequestBody UDFTree udfTree) {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName =
+                ModuleUserUtils.getOperationUser(req, "update udf tree " + udfTree.getName());
         Message message = null;
         try {
             udfTree.setUpdateTime(new Date());
@@ -269,7 +271,7 @@ public class UDFApi {
 
     @RequestMapping(path = "/tree/delete/{id}", method = RequestMethod.GET)
     public Message deleteTree(HttpServletRequest req, @PathVariable("id") Long id) {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "delete udf tree " + id);
         Message message = null;
         try {
             udfTreeService.deleteTree(id, userName);
@@ -285,7 +287,7 @@ public class UDFApi {
     public Message Authenticate(HttpServletRequest req) {
         Message message = null;
         try {
-            String userName = SecurityFilter.getLoginUsername(req);
+            String userName = ModuleUserUtils.getOperationUser(req);
             if (StringUtils.isEmpty(userName)) {
                 throw new UDFException("UserName is Empty!");
             }
@@ -307,14 +309,15 @@ public class UDFApi {
     public Message setExpire(HttpServletRequest req, @RequestBody JsonNode json) {
         Message message = null;
         try {
-            String userName = SecurityFilter.getLoginUsername(req);
-            if (StringUtils.isEmpty(userName)) {
-                throw new UDFException("UserName is Empty!");
-            }
             Long udfId = json.get("udfId").longValue();
             if (StringUtils.isEmpty(udfId)) {
                 throw new UDFException("udfId is Empty!");
             }
+            String userName = ModuleUserUtils.getOperationUser(req, "set expire udf " + udfId);
+            if (StringUtils.isEmpty(userName)) {
+                throw new UDFException("UserName is Empty!");
+            }
+
             verifyOperationUser(userName, udfId);
             udfService.setUdfExpire(udfId, userName);
             message = Message.ok();
@@ -333,7 +336,7 @@ public class UDFApi {
     public Message shareUDF(HttpServletRequest req, @RequestBody JsonNode json) throws Throwable {
         Message message = null;
         try {
-            String userName = SecurityFilter.getLoginUsername(req);
+            String userName = ModuleUserUtils.getOperationUser(req);
             if (StringUtils.isEmpty(userName)) {
                 throw new UDFException("UserName is Empty!");
             }
@@ -382,7 +385,7 @@ public class UDFApi {
     public Message getSharedUsers(HttpServletRequest req, @RequestBody JsonNode json) {
         Message message = null;
         try {
-            String userName = SecurityFilter.getLoginUsername(req);
+            String userName = ModuleUserUtils.getOperationUser(req);
             if (StringUtils.isEmpty(userName)) {
                 throw new UDFException("UserName is Empty!");
             }
@@ -408,15 +411,17 @@ public class UDFApi {
     public Message handoverUDF(HttpServletRequest req, @RequestBody JsonNode json) {
         Message message = null;
         try {
-            String userName = SecurityFilter.getLoginUsername(req);
-            if (StringUtils.isEmpty(userName)) {
-                throw new UDFException("username is empty!");
-            }
             long udfId = json.get("udfId").longValue();
             String handoverUser = json.get("handoverUser").textValue();
             if (StringUtils.isEmpty(handoverUser)) {
                 throw new UDFException("The handover user can't be null!");
             }
+            String userName =
+                    ModuleUserUtils.getOperationUser(
+                            req, String.join(",", "hand over udf", "" + udfId, handoverUser));
+            if (StringUtils.isEmpty(userName)) {
+                throw new UDFException("username is empty!");
+            }
             UDFInfo udfInfo = verifyOperationUser(userName, udfId);
             if (udfService.isUDFManager(udfInfo.getCreateUser())
                     && !udfService.isUDFManager(handoverUser)) {
@@ -455,7 +460,7 @@ public class UDFApi {
     public Message publishUDF(HttpServletRequest req, @RequestBody JsonNode json) {
         Message message = null;
         try {
-            String userName = SecurityFilter.getLoginUsername(req);
+            String userName = ModuleUserUtils.getOperationUser(req);
             if (StringUtils.isEmpty(userName)) {
                 throw new UDFException("username is empty!");
             }
@@ -478,7 +483,7 @@ public class UDFApi {
     public Message rollbackUDF(HttpServletRequest req, @RequestBody JsonNode json) {
         Message message = null;
         try {
-            String userName = SecurityFilter.getLoginUsername(req);
+            String userName = ModuleUserUtils.getOperationUser(req);
             if (StringUtils.isEmpty(userName)) {
                 throw new UDFException("username is empty!");
             }
@@ -498,7 +503,7 @@ public class UDFApi {
     public Message versionList(HttpServletRequest req, @RequestParam("udfId") long udfId) {
         Message message = null;
         try {
-            String userName = SecurityFilter.getLoginUsername(req);
+            String userName = ModuleUserUtils.getOperationUser(req);
             if (StringUtils.isEmpty(userName)) {
                 throw new UDFException("username is empty!");
             }
@@ -523,7 +528,7 @@ public class UDFApi {
     public Message managerPages(HttpServletRequest req, @RequestBody JsonNode jsonNode) {
         Message message = null;
         try {
-            String userName = SecurityFilter.getLoginUsername(req);
+            String userName = ModuleUserUtils.getOperationUser(req);
             if (StringUtils.isEmpty(userName)) {
                 throw new UDFException("username is empty!");
             }
@@ -560,12 +565,13 @@ public class UDFApi {
     public Message downloadUdf(HttpServletRequest req, @RequestBody JsonNode json) {
         Message message = null;
         try {
-            String userName = SecurityFilter.getLoginUsername(req);
+
+            long udfId = json.get("udfId").longValue();
+            String version = json.get("version").textValue();
+            String userName = ModuleUserUtils.getOperationUser(req, "downloadUdf " + udfId);
             if (StringUtils.isEmpty(userName)) {
                 throw new UDFException("username is empty!");
             }
-            long udfId = json.get("udfId").longValue();
-            String version = json.get("version").textValue();
             String content = udfService.downLoadUDF(udfId, version, userName);
             message = Message.ok();
             message.data("content", content);
@@ -585,12 +591,13 @@ public class UDFApi {
         BufferedInputStream fis = null;
         BufferedOutputStream outputStream = null;
         try {
-            String userName = SecurityFilter.getLoginUsername(req);
+
+            long udfId = json.get("udfId").longValue();
+            String version = json.get("version").textValue();
+            String userName = ModuleUserUtils.getOperationUser(req, "downloadUdf " + udfId);
             if (StringUtils.isEmpty(userName)) {
                 throw new UDFException("username is empty!");
             }
-            long udfId = json.get("udfId").longValue();
-            String version = json.get("version").textValue();
             DownloadVo downloadVo = udfService.downloadToLocal(udfId, version, userName);
             is = downloadVo.getInputStream();
             fis = new BufferedInputStream(is);
@@ -633,7 +640,7 @@ public class UDFApi {
     public Message allUdfUsers(HttpServletRequest req, @RequestBody JsonNode json) {
         Message message = null;
         try {
-            String userName = SecurityFilter.getLoginUsername(req);
+            String userName = ModuleUserUtils.getOperationUser(req, "allUdfUsers ");
             if (StringUtils.isEmpty(userName)) {
                 throw new UDFException("username is empty!");
             }
@@ -653,7 +660,7 @@ public class UDFApi {
             HttpServletRequest req, @RequestParam("category") String category) {
         Message message = null;
         try {
-            String userName = SecurityFilter.getLoginUsername(req);
+            String userName = ModuleUserUtils.getOperationUser(req, "userDirectory ");
             if (StringUtils.isEmpty(userName)) {
                 throw new UDFException("username is empty!");
             }
diff --git a/linkis-public-enhancements/linkis-publicservice/linkis-variable/src/main/java/org/apache/linkis/variable/restful/api/VariableRestfulApi.java b/linkis-public-enhancements/linkis-publicservice/linkis-variable/src/main/java/org/apache/linkis/variable/restful/api/VariableRestfulApi.java
index e6d0326..0ff83c6 100644
--- a/linkis-public-enhancements/linkis-publicservice/linkis-variable/src/main/java/org/apache/linkis/variable/restful/api/VariableRestfulApi.java
+++ b/linkis-public-enhancements/linkis-publicservice/linkis-variable/src/main/java/org/apache/linkis/variable/restful/api/VariableRestfulApi.java
@@ -18,7 +18,7 @@
 package org.apache.linkis.variable.restful.api;
 
 import org.apache.linkis.server.Message;
-import org.apache.linkis.server.security.SecurityFilter;
+import org.apache.linkis.server.utils.ModuleUserUtils;
 import org.apache.linkis.variable.entity.VarKeyValueVO;
 import org.apache.linkis.variable.exception.VariableException;
 import org.apache.linkis.variable.service.VariableService;
@@ -70,7 +70,7 @@ public class VariableRestfulApi {
 
     @RequestMapping(path = "listGlobalVariable", method = RequestMethod.GET)
     public Message listGlobalVariable(HttpServletRequest req) {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "listGlobalVariable ");
         List<VarKeyValueVO> kvs = variableService.listGlobalVariable(userName);
         return Message.ok().data("globalVariables", kvs);
     }
@@ -78,7 +78,7 @@ public class VariableRestfulApi {
     @RequestMapping(path = "saveGlobalVariable", method = RequestMethod.POST)
     public Message saveGlobalVariable(HttpServletRequest req, @RequestBody JsonNode json)
             throws IOException, VariableException {
-        String userName = SecurityFilter.getLoginUsername(req);
+        String userName = ModuleUserUtils.getOperationUser(req, "saveGlobalVariable ");
         List<VarKeyValueVO> userVariables = variableService.listGlobalVariable(userName);
         List globalVariables = mapper.treeToValue(json.get("globalVariables"), List.class);
         variableService.saveGlobalVaraibles(globalVariables, userVariables, userName);

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@linkis.apache.org
For additional commands, e-mail: commits-help@linkis.apache.org


[incubator-linkis] 01/13: Add related methods for operating proxy user cookies #1590

Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

alexkun pushed a commit to branch dev-1.1.1
in repository https://gitbox.apache.org/repos/asf/incubator-linkis.git

commit d25f4464e6cccc55852e2f6e2d48c7c0524dcf1d
Author: peacewong <wp...@gmail.com>
AuthorDate: Tue Mar 1 20:46:33 2022 +0800

    Add related methods for operating proxy user cookies #1590
---
 .../linkis/server/conf/ServerConfiguration.scala   |  4 +++
 .../apache/linkis/server/security/SSOUtils.scala   | 30 +++++++++++++++++++++-
 2 files changed, 33 insertions(+), 1 deletion(-)

diff --git a/linkis-commons/linkis-module/src/main/scala/org/apache/linkis/server/conf/ServerConfiguration.scala b/linkis-commons/linkis-module/src/main/scala/org/apache/linkis/server/conf/ServerConfiguration.scala
index 718dabf..94fcb34 100644
--- a/linkis-commons/linkis-module/src/main/scala/org/apache/linkis/server/conf/ServerConfiguration.scala
+++ b/linkis-commons/linkis-module/src/main/scala/org/apache/linkis/server/conf/ServerConfiguration.scala
@@ -120,4 +120,8 @@ object ServerConfiguration extends Logging{
 
   val LINKIE_USERNAME_SUFFIX_NAME = CommonVars("linkis.username.suffix.name", "_c").getValue
 
+  val LINKIS_SERVER_SESSION_TICKETID_KEY = CommonVars("wds.linkis.session.ticket.key", "linkis_user_session_ticket_id_v1")
+
+  val LINKIS_SERVER_SESSION_PROXY_TICKETID_KEY = CommonVars("wds.linkis.session.proxy.user.ticket.key", "linkis_user_session_proxy_ticket_id_v1")
+
 }
diff --git a/linkis-commons/linkis-module/src/main/scala/org/apache/linkis/server/security/SSOUtils.scala b/linkis-commons/linkis-module/src/main/scala/org/apache/linkis/server/security/SSOUtils.scala
index c7933ca..6fe2cff 100644
--- a/linkis-commons/linkis-module/src/main/scala/org/apache/linkis/server/security/SSOUtils.scala
+++ b/linkis-commons/linkis-module/src/main/scala/org/apache/linkis/server/security/SSOUtils.scala
@@ -29,7 +29,9 @@ import scala.collection.JavaConverters._
 
 object SSOUtils extends Logging {
 
-  private[security] val USER_TICKET_ID_STRING = "bdp-user-ticket-id"
+  private[security] val USER_TICKET_ID_STRING = ServerConfiguration.LINKIS_SERVER_SESSION_TICKETID_KEY.getValue
+
+  private[security] val PROXY_USER_TICKET_ID_STRING = ServerConfiguration.LINKIS_SERVER_SESSION_PROXY_TICKETID_KEY.getValue
 
   private val sessionTimeout = ServerConfiguration.BDP_SERVER_WEB_SESSION_TIMEOUT.getValue.toLong
 
@@ -103,6 +105,7 @@ object SSOUtils extends Logging {
       cookie.setValue(null)
       cookie.setMaxAge(0)
     }
+    removeProxyUser(cookies)
   }
 
   def removeLoginUserByAddCookie(addEmptyCookie: Cookie => Unit): Unit = {
@@ -153,4 +156,29 @@ object SSOUtils extends Logging {
 
   def getSessionTimeOut(): Long = sessionTimeout
 
+  def getProxyUserTicketKV(proxyUsername: String): (String, String) = {
+    val userTicketId = getUserTicketId(proxyUsername)
+    (PROXY_USER_TICKET_ID_STRING, userTicketId)
+  }
+
+  def setProxyUserCookie(addCookie: Cookie => Unit, username: String): Unit = {
+    info(s"add login userTicketCookie for user $username.")
+    val userTicketIdKv = getProxyUserTicketKV(username)
+    val cookie = new Cookie(userTicketIdKv._1, userTicketIdKv._2)
+    cookie.setMaxAge(-1)
+    if(sslEnable) cookie.setSecure(true)
+    cookie.setPath("/")
+    addCookie(cookie)
+  }
+
+  def getProxyUser(getCookies: => Array[Cookie]): Option[String] = getLoginUser(_ => Option(getCookies).flatMap(_.find(_.getName == PROXY_USER_TICKET_ID_STRING).map(_.getValue)))
+
+  def removeProxyUser(getCookies: => Array[Cookie]): Unit = {
+    val cookies = getCookies
+    if(cookies != null) cookies.find(_.getName == PROXY_USER_TICKET_ID_STRING).foreach { cookie =>
+      cookie.setValue(null)
+      cookie.setMaxAge(0)
+    }
+  }
+
 }

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@linkis.apache.org
For additional commands, e-mail: commits-help@linkis.apache.org


[incubator-linkis] 11/13: MDQProtocol should extend RequestProtocol

Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

alexkun pushed a commit to branch dev-1.1.1
in repository https://gitbox.apache.org/repos/asf/incubator-linkis.git

commit ea2563c5b819ff33d5e9a1fcb54efb38bb5cc4f7
Author: peacewong <wp...@gmail.com>
AuthorDate: Thu Mar 3 20:57:10 2022 +0800

    MDQProtocol should extend RequestProtocol
---
 .../main/scala/org/apache/linkis/protocol/mdq/MDQProtocol.scala  | 4 +++-
 .../src/main/scala/org/apache/linkis/rpc/RPCReceiveRestful.scala | 9 +++------
 2 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/linkis-commons/linkis-protocol/src/main/scala/org/apache/linkis/protocol/mdq/MDQProtocol.scala b/linkis-commons/linkis-protocol/src/main/scala/org/apache/linkis/protocol/mdq/MDQProtocol.scala
index e1be42d..4b3a74f 100644
--- a/linkis-commons/linkis-protocol/src/main/scala/org/apache/linkis/protocol/mdq/MDQProtocol.scala
+++ b/linkis-commons/linkis-protocol/src/main/scala/org/apache/linkis/protocol/mdq/MDQProtocol.scala
@@ -17,8 +17,10 @@
  
 package org.apache.linkis.protocol.mdq
 
+import org.apache.linkis.protocol.message.RequestProtocol
+
 import java.util
-trait MDQProtocol {
+trait MDQProtocol extends RequestProtocol{
 
 }
 
diff --git a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/RPCReceiveRestful.scala b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/RPCReceiveRestful.scala
index 26cf5b6..e4e3f3c 100644
--- a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/RPCReceiveRestful.scala
+++ b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/RPCReceiveRestful.scala
@@ -17,26 +17,23 @@
  
 package org.apache.linkis.rpc
 
-import java.util.concurrent.TimeUnit
-
+import org.apache.commons.lang.StringUtils
 import org.apache.linkis.common.utils.Logging
 import org.apache.linkis.protocol.BroadcastProtocol
 import org.apache.linkis.rpc.conf.RPCConfiguration.{BDP_RPC_RECEIVER_ASYN_CONSUMER_THREAD_FREE_TIME_MAX, BDP_RPC_RECEIVER_ASYN_CONSUMER_THREAD_MAX, BDP_RPC_RECEIVER_ASYN_QUEUE_CAPACITY}
 import org.apache.linkis.rpc.exception.DWCURIException
 import org.apache.linkis.rpc.transform.{RPCConsumer, RPCProduct}
 import org.apache.linkis.server.{Message, catchIt}
-import javax.annotation.PostConstruct
-import org.apache.commons.lang.StringUtils
 import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
 import org.springframework.web.bind.annotation.{RequestBody, RequestMapping, RequestMethod, RestController}
 
+import java.util.concurrent.TimeUnit
+import javax.annotation.PostConstruct
 import scala.concurrent.duration.Duration
 import scala.runtime.BoxedUnit
 
 
 @RestController
-@ConditionalOnMissingBean(name = Array("messageRPCReceiveRestful"))
 private[rpc] class RPCReceiveRestful extends RPCReceiveRemote with Logging {
 
   @Autowired(required = false)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@linkis.apache.org
For additional commands, e-mail: commits-help@linkis.apache.org


[incubator-linkis] 04/13: Optimize code

Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

alexkun pushed a commit to branch dev-1.1.1
in repository https://gitbox.apache.org/repos/asf/incubator-linkis.git

commit 43a383447d14aff57b4e86668593037bb0941235
Author: peacewong <wp...@gmail.com>
AuthorDate: Thu Mar 3 16:05:16 2022 +0800

    Optimize code
---
 .../main/java/org/apache/linkis/storage/fs/impl/LocalFileSystem.java   | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/linkis-commons/linkis-storage/src/main/java/org/apache/linkis/storage/fs/impl/LocalFileSystem.java b/linkis-commons/linkis-storage/src/main/java/org/apache/linkis/storage/fs/impl/LocalFileSystem.java
index bd5ced3..b026648 100644
--- a/linkis-commons/linkis-storage/src/main/java/org/apache/linkis/storage/fs/impl/LocalFileSystem.java
+++ b/linkis-commons/linkis-storage/src/main/java/org/apache/linkis/storage/fs/impl/LocalFileSystem.java
@@ -178,8 +178,9 @@ public class LocalFileSystem extends FileSystem {
                                 + ", only owner can mkdir path "
                                 + destParentDir);
             }
+            return true;
         }
-        return false;
+
     }
 
     @Override

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@linkis.apache.org
For additional commands, e-mail: commits-help@linkis.apache.org


[incubator-linkis] 08/13: add compress version 1.20

Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

alexkun pushed a commit to branch dev-1.1.1
in repository https://gitbox.apache.org/repos/asf/incubator-linkis.git

commit 2552fb9f3f7f874b809c6c10b0b19e7636383a2c
Author: peacewong <wp...@gmail.com>
AuthorDate: Thu Mar 3 18:40:01 2022 +0800

    add compress version 1.20
---
 tool/dependencies/known-dependencies.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tool/dependencies/known-dependencies.txt b/tool/dependencies/known-dependencies.txt
index 13ffa31..4d82d57 100644
--- a/tool/dependencies/known-dependencies.txt
+++ b/tool/dependencies/known-dependencies.txt
@@ -55,6 +55,7 @@ commons-codec-1.14.jar
 commons-collections-3.2.2.jar
 commons-collections4-4.4.jar
 commons-compiler-3.1.2.jar
+commons-compress-1.20.jar
 commons-compress-1.21.jar
 commons-compress-1.4.1.jar
 commons-compress-1.9.jar

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@linkis.apache.org
For additional commands, e-mail: commits-help@linkis.apache.org


[incubator-linkis] 03/13: Solve excel download naming problem

Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

alexkun pushed a commit to branch dev-1.1.1
in repository https://gitbox.apache.org/repos/asf/incubator-linkis.git

commit 2f959cffa5aa9cff0c5ef057addfd52132aa44c4
Author: HmhWz <93...@qq.com>
AuthorDate: Thu Mar 3 15:29:45 2022 +0800

    Solve excel download naming problem
---
 .../pipeline/executor/ExcelExecutor.scala          |  2 +-
 .../filesystem/restful/api/FsRestfulApi.java       | 37 ++++++++++++++++++++++
 2 files changed, 38 insertions(+), 1 deletion(-)

diff --git a/linkis-engineconn-plugins/engineconn-plugins/pipeline/src/main/scala/org/apache/linkis/manager/engineplugin/pipeline/executor/ExcelExecutor.scala b/linkis-engineconn-plugins/engineconn-plugins/pipeline/src/main/scala/org/apache/linkis/manager/engineplugin/pipeline/executor/ExcelExecutor.scala
index d087671..680043f 100644
--- a/linkis-engineconn-plugins/engineconn-plugins/pipeline/src/main/scala/org/apache/linkis/manager/engineplugin/pipeline/executor/ExcelExecutor.scala
+++ b/linkis-engineconn-plugins/engineconn-plugins/pipeline/src/main/scala/org/apache/linkis/manager/engineplugin/pipeline/executor/ExcelExecutor.scala
@@ -73,7 +73,7 @@ class ExcelExecutor extends PipeLineExecutor {
     super.execute(sourcePath, destPath, engineExecutorContext)
   }
 
-  override def Kind: String = "excel"
+  override def Kind: String = "xlsx"
 }
 
 object ExcelExecutor {
diff --git a/linkis-public-enhancements/linkis-publicservice/linkis-script-dev/linkis-storage-script-dev-server/src/main/java/org/apache/linkis/filesystem/restful/api/FsRestfulApi.java b/linkis-public-enhancements/linkis-publicservice/linkis-script-dev/linkis-storage-script-dev-server/src/main/java/org/apache/linkis/filesystem/restful/api/FsRestfulApi.java
index cc3ef8d..0856250 100644
--- a/linkis-public-enhancements/linkis-publicservice/linkis-script-dev/linkis-storage-script-dev-server/src/main/java/org/apache/linkis/filesystem/restful/api/FsRestfulApi.java
+++ b/linkis-public-enhancements/linkis-publicservice/linkis-script-dev/linkis-storage-script-dev-server/src/main/java/org/apache/linkis/filesystem/restful/api/FsRestfulApi.java
@@ -388,6 +388,43 @@ public class FsRestfulApi {
         return Message.ok().data("isExist", fileSystem.exists(fsPath));
     }
 
+    @RequestMapping(path = "/fileInfo", method = RequestMethod.GET)
+    public Message fileInfo(
+            HttpServletRequest req,
+            @RequestParam(value = "path", required = false) String path,
+            @RequestParam(value = "pageSize", defaultValue = "5000") Integer pageSize)
+            throws IOException, WorkSpaceException {
+        String userName = SecurityFilter.getLoginUsername(req);
+        if (StringUtils.isEmpty(path)) {
+            throw WorkspaceExceptionManager.createException(80004, path);
+        }
+        FsPath fsPath = new FsPath(path);
+        FileSystem fileSystem = fsService.getFileSystem(userName, fsPath);
+        // Throws an exception if the file does not have read access(如果文件没读权限,抛出异常)
+        if (!fileSystem.canRead(fsPath)) {
+            throw WorkspaceExceptionManager.createException(80012);
+        }
+        FileSource fileSource = null;
+        try {
+            Message message = Message.ok();
+            fileSource = FileSource$.MODULE$.create(fsPath, fileSystem);
+            Pair<Object, Object>[] fileInfo = fileSource.getFileInfo(pageSize);
+            IOUtils.closeQuietly(fileSource);
+            if (null != fileInfo && fileInfo.length > 0) {
+                message.data("path", path);
+                message.data("colNumber", fileInfo[0].getFirst());
+                message.data("rowNumber", fileInfo[0].getSecond());
+            } else {
+                message.data("path", path);
+                message.data("colNumber", 0);
+                message.data("rowNumber", 0);
+            }
+            return message;
+        } finally {
+            IOUtils.closeQuietly(fileSource);
+        }
+    }
+
     @RequestMapping(path = "/openFile", method = RequestMethod.GET)
     public Message openFile(
             HttpServletRequest req,

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@linkis.apache.org
For additional commands, e-mail: commits-help@linkis.apache.org


[incubator-linkis] 13/13: remove message XmlRootElement annotation #1607

Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

alexkun pushed a commit to branch dev-1.1.1
in repository https://gitbox.apache.org/repos/asf/incubator-linkis.git

commit 8011773e719bb89bb51430ad2e7e3127145e71a3
Author: peacewong <wp...@gmail.com>
AuthorDate: Fri Mar 4 12:09:07 2022 +0800

    remove message XmlRootElement annotation #1607
---
 .../src/main/scala/org/apache/linkis/server/Message.scala         | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/linkis-commons/linkis-module/src/main/scala/org/apache/linkis/server/Message.scala b/linkis-commons/linkis-module/src/main/scala/org/apache/linkis/server/Message.scala
index abf9f54..d8f6b30 100644
--- a/linkis-commons/linkis-module/src/main/scala/org/apache/linkis/server/Message.scala
+++ b/linkis-commons/linkis-module/src/main/scala/org/apache/linkis/server/Message.scala
@@ -17,17 +17,15 @@
 
 package org.apache.linkis.server
 
-import java.util
-
-import javax.servlet.http.HttpServletRequest
-import javax.xml.bind.annotation.XmlRootElement
 import org.apache.commons.lang.StringUtils
 import org.apache.commons.lang.exception.ExceptionUtils
 import org.slf4j.LoggerFactory
 import org.springframework.web.context.request.{RequestContextHolder, ServletRequestAttributes}
 
+import java.util
+import javax.servlet.http.HttpServletRequest
+
 
-@XmlRootElement(name = "message")
 class Message(private var method: String,
               private var status: Int = 0,          //-1 no login, 0 success, 1 error, 2 validate failed, 3 auth failed, 4 warning
               private var message: String,

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@linkis.apache.org
For additional commands, e-mail: commits-help@linkis.apache.org


[incubator-linkis] 06/13: Solve excel download naming problem

Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

alexkun pushed a commit to branch dev-1.1.1
in repository https://gitbox.apache.org/repos/asf/incubator-linkis.git

commit 029c4ea797045f4a131582a2f640203539e85b98
Author: HmhWz <93...@qq.com>
AuthorDate: Thu Mar 3 16:17:06 2022 +0800

    Solve excel download naming problem
---
 .../linkis/manager/engineplugin/pipeline/executor/ExcelExecutor.scala   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/linkis-engineconn-plugins/engineconn-plugins/pipeline/src/main/scala/org/apache/linkis/manager/engineplugin/pipeline/executor/ExcelExecutor.scala b/linkis-engineconn-plugins/engineconn-plugins/pipeline/src/main/scala/org/apache/linkis/manager/engineplugin/pipeline/executor/ExcelExecutor.scala
index 680043f..eb5f8c7 100644
--- a/linkis-engineconn-plugins/engineconn-plugins/pipeline/src/main/scala/org/apache/linkis/manager/engineplugin/pipeline/executor/ExcelExecutor.scala
+++ b/linkis-engineconn-plugins/engineconn-plugins/pipeline/src/main/scala/org/apache/linkis/manager/engineplugin/pipeline/executor/ExcelExecutor.scala
@@ -36,7 +36,7 @@ class ExcelExecutor extends PipeLineExecutor {
     var fileSource: FileSource = null
     var excelFsWriter: ExcelFsWriter = null
     val sourceFsPath = new FsPath(sourcePath)
-    val destFsPath = new FsPath(s"$destPath.xlsx")
+    val destFsPath = new FsPath(destPath)
     val sourceFs = FSFactory.getFs(sourceFsPath)
     sourceFs.init(null)
     val destFs = FSFactory.getFs(destFsPath)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@linkis.apache.org
For additional commands, e-mail: commits-help@linkis.apache.org


[incubator-linkis] 10/13: add license header

Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

alexkun pushed a commit to branch dev-1.1.1
in repository https://gitbox.apache.org/repos/asf/incubator-linkis.git

commit 8e45de18a6fa49abadc783e8c0c20f944537d475
Author: peacewong <wp...@gmail.com>
AuthorDate: Thu Mar 3 18:44:48 2022 +0800

    add license header
---
 .../java/org/apache/linkis/proxy/ProxyUserEntity.java   | 17 +++++++++++++++++
 .../java/org/apache/linkis/proxy/ProxyUserService.java  | 17 +++++++++++++++++
 .../org/apache/linkis/server/utils/ModuleUserUtils.java | 17 +++++++++++++++++
 .../linkis/server/security/ProxyUserSSOUtils.scala      |  1 -
 4 files changed, 51 insertions(+), 1 deletion(-)

diff --git a/linkis-commons/linkis-module/src/main/java/org/apache/linkis/proxy/ProxyUserEntity.java b/linkis-commons/linkis-module/src/main/java/org/apache/linkis/proxy/ProxyUserEntity.java
index f03fd45..a4e0a50 100644
--- a/linkis-commons/linkis-module/src/main/java/org/apache/linkis/proxy/ProxyUserEntity.java
+++ b/linkis-commons/linkis-module/src/main/java/org/apache/linkis/proxy/ProxyUserEntity.java
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.apache.linkis.proxy;
 
 import org.apache.commons.lang.StringUtils;
diff --git a/linkis-commons/linkis-module/src/main/java/org/apache/linkis/proxy/ProxyUserService.java b/linkis-commons/linkis-module/src/main/java/org/apache/linkis/proxy/ProxyUserService.java
index 29f63da..99cbd05 100644
--- a/linkis-commons/linkis-module/src/main/java/org/apache/linkis/proxy/ProxyUserService.java
+++ b/linkis-commons/linkis-module/src/main/java/org/apache/linkis/proxy/ProxyUserService.java
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.apache.linkis.proxy;
 
 public interface ProxyUserService {
diff --git a/linkis-commons/linkis-module/src/main/java/org/apache/linkis/server/utils/ModuleUserUtils.java b/linkis-commons/linkis-module/src/main/java/org/apache/linkis/server/utils/ModuleUserUtils.java
index 198cbb9..22693e5 100644
--- a/linkis-commons/linkis-module/src/main/java/org/apache/linkis/server/utils/ModuleUserUtils.java
+++ b/linkis-commons/linkis-module/src/main/java/org/apache/linkis/server/utils/ModuleUserUtils.java
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.apache.linkis.server.utils;
 
 import org.apache.linkis.proxy.ProxyUserEntity;
diff --git a/linkis-commons/linkis-module/src/main/scala/org/apache/linkis/server/security/ProxyUserSSOUtils.scala b/linkis-commons/linkis-module/src/main/scala/org/apache/linkis/server/security/ProxyUserSSOUtils.scala
index cac0723..c2799b4 100644
--- a/linkis-commons/linkis-module/src/main/scala/org/apache/linkis/server/security/ProxyUserSSOUtils.scala
+++ b/linkis-commons/linkis-module/src/main/scala/org/apache/linkis/server/security/ProxyUserSSOUtils.scala
@@ -21,7 +21,6 @@ import org.apache.commons.lang.StringUtils
 import org.apache.linkis.common.conf.CommonVars
 import org.apache.linkis.common.utils.{DESUtil, Logging}
 import org.apache.linkis.server.conf.ServerConfiguration
-import org.apache.linkis.server.security.SecurityFilter.getLoginUser
 
 import javax.servlet.http.{Cookie, HttpServletRequest}
 

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@linkis.apache.org
For additional commands, e-mail: commits-help@linkis.apache.org


[incubator-linkis] 05/13: exclude commons-compress #1598

Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

alexkun pushed a commit to branch dev-1.1.1
in repository https://gitbox.apache.org/repos/asf/incubator-linkis.git

commit b0030f26b1c8592c244d4358e892dd46ace794de
Author: peacewong <wp...@gmail.com>
AuthorDate: Thu Mar 3 16:06:32 2022 +0800

    exclude commons-compress #1598
---
 linkis-commons/linkis-hadoop-common/pom.xml | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/linkis-commons/linkis-hadoop-common/pom.xml b/linkis-commons/linkis-hadoop-common/pom.xml
index 7177d43..9dd5092 100644
--- a/linkis-commons/linkis-hadoop-common/pom.xml
+++ b/linkis-commons/linkis-hadoop-common/pom.xml
@@ -134,6 +134,11 @@
                     <artifactId>protobuf-java</artifactId>
                 </exclusion>
 
+                <exclusion>
+                    <groupId>org.apache.commons</groupId>
+                    <artifactId>commons-compress</artifactId>
+                </exclusion>
+
             </exclusions>
         </dependency>
 

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@linkis.apache.org
For additional commands, e-mail: commits-help@linkis.apache.org