Repository: geode
Updated Branches:
  refs/heads/develop e3eb92712 -> 6619a3de9


GEODE-2354: set global session timeout to MAX_VALUE


Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/6619a3de
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/6619a3de
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/6619a3de

Branch: refs/heads/develop
Commit: 6619a3de9b956d69e3c991f53572595e54ce0549
Parents: e3eb927
Author: Kirk Lund <[email protected]>
Authored: Tue Jan 24 12:34:15 2017 -0800
Committer: Kirk Lund <[email protected]>
Committed: Wed Jan 25 16:39:51 2017 -0800

----------------------------------------------------------------------
 .../security/IntegratedSecurityService.java     | 22 +++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/geode/blob/6619a3de/geode-core/src/main/java/org/apache/geode/internal/security/IntegratedSecurityService.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/security/IntegratedSecurityService.java
 
b/geode-core/src/main/java/org/apache/geode/internal/security/IntegratedSecurityService.java
index 73d051f..6507295 100644
--- 
a/geode-core/src/main/java/org/apache/geode/internal/security/IntegratedSecurityService.java
+++ 
b/geode-core/src/main/java/org/apache/geode/internal/security/IntegratedSecurityService.java
@@ -25,6 +25,7 @@ import org.apache.commons.lang.StringUtils;
 import org.apache.geode.GemFireIOException;
 import org.apache.geode.internal.cache.EntryEventImpl;
 import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.internal.logging.log4j.LogMarker;
 import org.apache.geode.internal.security.shiro.CustomAuthRealm;
 import org.apache.geode.internal.security.shiro.GeodeAuthenticationToken;
 import org.apache.geode.internal.security.shiro.ShiroPrincipal;
@@ -47,6 +48,8 @@ import org.apache.shiro.config.Ini.Section;
 import org.apache.shiro.config.IniSecurityManagerFactory;
 import org.apache.shiro.mgt.DefaultSecurityManager;
 import org.apache.shiro.realm.Realm;
+import org.apache.shiro.session.mgt.DefaultSessionManager;
+import org.apache.shiro.session.mgt.SessionManager;
 import org.apache.shiro.subject.Subject;
 import org.apache.shiro.subject.support.SubjectThreadState;
 import org.apache.shiro.util.ThreadContext;
@@ -420,13 +423,30 @@ public class IntegratedSecurityService implements 
SecurityService {
 
     this.securityManager = securityManager;
     Realm realm = new CustomAuthRealm(securityManager);
-    org.apache.shiro.mgt.SecurityManager shiroManager = new 
DefaultSecurityManager(realm);
+    DefaultSecurityManager shiroManager = new DefaultSecurityManager(realm);
     SecurityUtils.setSecurityManager(shiroManager);
+    increaseShiroGlobalSessionTimeout(shiroManager);
+
     isIntegratedSecurity = true;
     isClientAuthenticator = false;
     isPeerAuthenticator = false;
   }
 
+  private void increaseShiroGlobalSessionTimeout(final DefaultSecurityManager 
shiroManager) {
+    SessionManager sessionManager = shiroManager.getSessionManager();
+    if (DefaultSessionManager.class.isInstance(sessionManager)) {
+      DefaultSessionManager defaultSessionManager = (DefaultSessionManager) 
sessionManager;
+      defaultSessionManager.setGlobalSessionTimeout(Long.MAX_VALUE);
+      long value = defaultSessionManager.getGlobalSessionTimeout();
+      if (value != Long.MAX_VALUE) {
+        logger.error("Unable to set Shiro Global Session Timeout. Current 
value is '{}'.", value);
+      }
+    } else {
+      logger.error("Unable to set Shiro Global Session Timeout. Current 
SessionManager is '{}'.",
+          sessionManager == null ? "null" : sessionManager.getClass());
+    }
+  }
+
   public PostProcessor getPostProcessor() {
     return postProcessor;
   }

Reply via email to