You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@linkis.apache.org by ca...@apache.org on 2022/05/05 11:34:23 UTC

[incubator-linkis] 02/05: add gateway url to request headers

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

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

commit 1d2e81356392e899bbbdb175bbde42ed334992f7
Author: peacewong <wp...@gmail.com>
AuthorDate: Fri Apr 29 16:12:17 2022 +0800

    add gateway url to request headers
---
 .../gateway/config/GatewayConfiguration.scala      |  3 ++
 .../linkis/gateway/http/GatewayHttpUtils.scala     | 43 ++++++++++++++++++++++
 .../linkis/gateway/security/SecurityFilter.scala   |  6 +--
 3 files changed, 49 insertions(+), 3 deletions(-)

diff --git a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/config/GatewayConfiguration.scala b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/config/GatewayConfiguration.scala
index fecb4f74b..49b082c29 100644
--- a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/config/GatewayConfiguration.scala
+++ b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/config/GatewayConfiguration.scala
@@ -75,4 +75,7 @@ object GatewayConfiguration {
 
   // Use regex to match against URLs, if matched, let them pass anyway(even if not currently logged in), Use "()" and "|" to match against multiple URLs
   val GATEWAY_NO_AUTH_URL_REGEX = CommonVars("wds.linkis.gateway.no.auth.url.regex", ".*visualis.*share.*")
+
+  val THIS_GATEWAY_URL = CommonVars("wds.linkis.gateway.this.url", "")
+  val THIS_GATEWAY_SCHEMA = CommonVars("wds.linkis.gateway.this.schema", "")
 }
diff --git a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/http/GatewayHttpUtils.scala b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/http/GatewayHttpUtils.scala
new file mode 100644
index 000000000..9951ad1da
--- /dev/null
+++ b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/http/GatewayHttpUtils.scala
@@ -0,0 +1,43 @@
+/*
+ * 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.gateway.http
+
+import org.apache.commons.lang3.StringUtils
+import org.apache.linkis.gateway.config.GatewayConfiguration.{THIS_GATEWAY_SCHEMA, THIS_GATEWAY_URL}
+import org.apache.linkis.rpc.Sender
+
+
+object GatewayHttpUtils {
+
+  private val GATEWAY_URL = "GATEWAY_URL"
+
+  def addGateWayUrlToRequest(gatewayContext: GatewayContext): Unit = {
+    val gatewWayURL = if (StringUtils.isNotBlank(THIS_GATEWAY_URL.getValue)) {
+      THIS_GATEWAY_URL.getValue
+    } else {
+      val schema = if (StringUtils.isNotBlank(THIS_GATEWAY_SCHEMA.getValue)) {
+        THIS_GATEWAY_SCHEMA.getValue
+      } else {
+        gatewayContext.getRequest.getURI.getScheme
+      }
+      s"$schema://${Sender.getThisInstance}"
+    }
+    val array = Array(gatewWayURL)
+    gatewayContext.getRequest.addHeader(GATEWAY_URL, array)
+  }
+}
diff --git a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/security/SecurityFilter.scala b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/security/SecurityFilter.scala
index d1d120a30..d7f932356 100644
--- a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/security/SecurityFilter.scala
+++ b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/security/SecurityFilter.scala
@@ -22,13 +22,12 @@ import java.text.DateFormat
 import java.util
 import java.util.concurrent.TimeUnit
 import java.util.{Date, Locale}
-
 import org.apache.linkis.common.conf.Configuration
 import org.apache.linkis.common.exception.LinkisException
 import org.apache.linkis.common.utils.{Logging, Utils}
 import org.apache.linkis.gateway.config.GatewayConfiguration
 import org.apache.linkis.gateway.config.GatewayConfiguration._
-import org.apache.linkis.gateway.http.GatewayContext
+import org.apache.linkis.gateway.http.{GatewayContext, GatewayHttpUtils}
 import org.apache.linkis.gateway.security.sso.SSOInterceptor
 import org.apache.linkis.gateway.security.token.TokenAuthentication
 import org.apache.linkis.server.conf.ServerConfiguration
@@ -36,6 +35,7 @@ import org.apache.linkis.server.exception.{LoginExpireException, NonLoginExcepti
 import org.apache.linkis.server.{Message, validateFailed}
 import org.apache.commons.lang.StringUtils
 import org.apache.commons.lang.exception.ExceptionUtils
+
 import java.util.regex.Pattern
 
 object SecurityFilter extends Logging {
@@ -63,7 +63,7 @@ object SecurityFilter extends Logging {
         return false
       }
     }
-    gatewayContext.getRequest.getURI.getHost
+    GatewayHttpUtils.addGateWayUrlToRequest(gatewayContext)
     if (refererValidate) {
       //Security certification support, referer limited(安全认证支持,referer限定)
       val referer = gatewayContext.getRequest.getHeaders.get("Referer")


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