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:28 UTC

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

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