You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by di...@apache.org on 2013/09/24 02:50:04 UTC

git commit: knox-136, Knox should support configurable session timeout

Updated Branches:
  refs/heads/master 371708bb7 -> d73f730a0


knox-136, Knox should support configurable session timeout


Project: http://git-wip-us.apache.org/repos/asf/incubator-knox/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-knox/commit/d73f730a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-knox/tree/d73f730a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-knox/diff/d73f730a

Branch: refs/heads/master
Commit: d73f730a05ee845bf4ca97423a1b57fcca79a4fb
Parents: 371708b
Author: Dilli Dorai Arumugam <da...@hortonworks.com>
Authored: Mon Sep 23 17:47:57 2013 -0700
Committer: Dilli Dorai Arumugam <da...@hortonworks.com>
Committed: Mon Sep 23 17:47:57 2013 -0700

----------------------------------------------------------------------
 .../deploy/impl/ShiroDeploymentContributor.java | 23 ++++++++++++++++++--
 gateway-release/home/deployments/sandbox.xml    |  9 ++++++++
 2 files changed, 30 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/d73f730a/gateway-provider-security-shiro/src/main/java/org/apache/hadoop/gateway/deploy/impl/ShiroDeploymentContributor.java
----------------------------------------------------------------------
diff --git a/gateway-provider-security-shiro/src/main/java/org/apache/hadoop/gateway/deploy/impl/ShiroDeploymentContributor.java b/gateway-provider-security-shiro/src/main/java/org/apache/hadoop/gateway/deploy/impl/ShiroDeploymentContributor.java
index 10a66ac..fe4efa0 100644
--- a/gateway-provider-security-shiro/src/main/java/org/apache/hadoop/gateway/deploy/impl/ShiroDeploymentContributor.java
+++ b/gateway-provider-security-shiro/src/main/java/org/apache/hadoop/gateway/deploy/impl/ShiroDeploymentContributor.java
@@ -17,6 +17,9 @@
  */
 package org.apache.hadoop.gateway.deploy.impl;
 
+import java.util.List;
+import java.util.Map;
+
 import org.apache.hadoop.gateway.deploy.DeploymentContext;
 import org.apache.hadoop.gateway.deploy.ProviderDeploymentContributorBase;
 import org.apache.hadoop.gateway.descriptor.FilterParamDescriptor;
@@ -24,8 +27,8 @@ import org.apache.hadoop.gateway.descriptor.ResourceDescriptor;
 import org.apache.hadoop.gateway.topology.Provider;
 import org.apache.hadoop.gateway.topology.Service;
 import org.jboss.shrinkwrap.api.asset.StringAsset;
-
-import java.util.List;
+import org.jboss.shrinkwrap.descriptor.api.webapp30.WebAppDescriptor;
+import org.jboss.shrinkwrap.descriptor.api.webcommon30.SessionConfigType;
 
 public class ShiroDeploymentContributor extends ProviderDeploymentContributorBase {
 
@@ -33,6 +36,8 @@ public class ShiroDeploymentContributor extends ProviderDeploymentContributorBas
   private static final String SHIRO_FILTER_CLASSNAME = "org.apache.shiro.web.servlet.ShiroFilter";
   private static final String POST_FILTER_CLASSNAME = "org.apache.hadoop.gateway.filter.PostAuthenticationFilter";
   private static final String COOKIE_FILTER_CLASSNAME = "org.apache.hadoop.gateway.filter.ResponseCookieFilter";
+  private static final String SESSION_TIMEOUT = "sessionTimeout";
+  private static final int DEFAULT_SESSION_TIMEOUT = 30; // 30min
 
   @Override
   public String getRole() {
@@ -52,6 +57,20 @@ public class ShiroDeploymentContributor extends ProviderDeploymentContributorBas
 	
     // add servletContextListener
     context.getWebAppDescriptor().createListener().listenerClass( LISTENER_CLASSNAME );
+    
+    // add session timeout
+    int st = DEFAULT_SESSION_TIMEOUT;
+    SessionConfigType<WebAppDescriptor> sessionConfig = context.getWebAppDescriptor().createSessionConfig();
+    Map<String, String> params = provider.getParams();
+    String sts = params.get(SESSION_TIMEOUT);
+    if (sts != null && sts.trim().length() != 0) {
+      st = Integer.valueOf(sts.trim());
+    }
+    if (st <= 0) {
+      // user default session timeout
+      st = DEFAULT_SESSION_TIMEOUT;
+    }
+    sessionConfig.sessionTimeout(st);
 
     // Writing provider specific config out to the war for cluster specific config can be
 	// accomplished through the DeploymentContext as well. The JBoss shrinkwrap API can be

http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/d73f730a/gateway-release/home/deployments/sandbox.xml
----------------------------------------------------------------------
diff --git a/gateway-release/home/deployments/sandbox.xml b/gateway-release/home/deployments/sandbox.xml
index b7987e3..68eb96a 100644
--- a/gateway-release/home/deployments/sandbox.xml
+++ b/gateway-release/home/deployments/sandbox.xml
@@ -23,6 +23,15 @@
             <name>ShiroProvider</name>
             <enabled>true</enabled>
             <param>
+                <!-- 
+                session timeout in minutes, 
+                defaults to 30mins, if the property value is not defined,, 
+                client authentication would expire after this time 
+                -->
+                <name>sessionTimeout</name>
+                <value>30</value>
+            </param>
+            <param>
                 <name>main.ldapRealm</name>
                 <value>org.apache.shiro.realm.ldap.JndiLdapRealm</value>
             </param>