[jboss-cvs] JBossAS SVN: r114710 - in branches/JBPAPP_5: security/src and 3 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Feb 10 13:29:46 EST 2014


Author: sguilhen at redhat.com
Date: 2014-02-10 13:29:46 -0500 (Mon, 10 Feb 2014)
New Revision: 114710

Added:
   branches/JBPAPP_5/security/src/main/org/jboss/security/auth/AuthenticationTimedCachePolicyFactory.java
   branches/JBPAPP_5/security/src/main/org/jboss/security/auth/CachePolicyFactory.java
   branches/JBPAPP_5/security/src/main/org/jboss/security/auth/NullCachePolicyFactory.java
Modified:
   branches/JBPAPP_5/
   branches/JBPAPP_5/security/src/
   branches/JBPAPP_5/security/src/main/org/jboss/security/integration/JNDIBasedSecurityManagement.java
   branches/JBPAPP_5/security/src/main/org/jboss/security/plugins/JaasSecurityManagerService.java
Log:
JBPAPP-5378 Add a CachePolicyFactory that can be injected into JNDIBasedSecurityManagement


Property changes on: branches/JBPAPP_5
___________________________________________________________________
Added: svn:global-ignores
   + *.iml



Property changes on: branches/JBPAPP_5/security/src
___________________________________________________________________
Added: svn:ignore
   + *.iml


Added: branches/JBPAPP_5/security/src/main/org/jboss/security/auth/AuthenticationTimedCachePolicyFactory.java
===================================================================
--- branches/JBPAPP_5/security/src/main/org/jboss/security/auth/AuthenticationTimedCachePolicyFactory.java	                        (rev 0)
+++ branches/JBPAPP_5/security/src/main/org/jboss/security/auth/AuthenticationTimedCachePolicyFactory.java	2014-02-10 18:29:46 UTC (rev 114710)
@@ -0,0 +1,17 @@
+package org.jboss.security.auth;
+
+import org.jboss.util.CachePolicy;
+import org.jboss.util.TimedCachePolicy;
+
+import java.io.Serializable;
+
+public class AuthenticationTimedCachePolicyFactory implements CachePolicyFactory, Serializable {
+
+    public CachePolicy createCachePolicy(final String securityDomain, final int defaultCacheTimeout, final int defaultCacheResolution) {
+        final TimedCachePolicy cachePolicy =
+                new AuthenticationTimedCachePolicy(defaultCacheTimeout, true, defaultCacheResolution);
+        cachePolicy.create();
+        cachePolicy.start();
+        return cachePolicy;
+    }
+}

Added: branches/JBPAPP_5/security/src/main/org/jboss/security/auth/CachePolicyFactory.java
===================================================================
--- branches/JBPAPP_5/security/src/main/org/jboss/security/auth/CachePolicyFactory.java	                        (rev 0)
+++ branches/JBPAPP_5/security/src/main/org/jboss/security/auth/CachePolicyFactory.java	2014-02-10 18:29:46 UTC (rev 114710)
@@ -0,0 +1,13 @@
+package org.jboss.security.auth;
+
+import org.jboss.util.CachePolicy;
+
+/**
+ * <p>
+ * Interface that must be implemented by factories of {@code CachePolicy} objects.
+ * </p>
+ */
+public interface CachePolicyFactory {
+
+    CachePolicy createCachePolicy(final String securityDomain, final int defaultCacheTimeout, final int defaultCacheResolution);
+}

Added: branches/JBPAPP_5/security/src/main/org/jboss/security/auth/NullCachePolicyFactory.java
===================================================================
--- branches/JBPAPP_5/security/src/main/org/jboss/security/auth/NullCachePolicyFactory.java	                        (rev 0)
+++ branches/JBPAPP_5/security/src/main/org/jboss/security/auth/NullCachePolicyFactory.java	2014-02-10 18:29:46 UTC (rev 114710)
@@ -0,0 +1,18 @@
+package org.jboss.security.auth;
+
+import org.jboss.util.CachePolicy;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * A {@link org.jboss.security.auth.CachePolicyFactory} implementation that returns {@code null} policies. This can be
+ * used to disable the security cache.
+ * </p>
+ */
+public class NullCachePolicyFactory implements CachePolicyFactory, Serializable {
+
+    public CachePolicy createCachePolicy(final String securityDomain, final int defaultCacheTimeout, final int defaultCacheResolution) {
+        return null;
+    }
+}

Modified: branches/JBPAPP_5/security/src/main/org/jboss/security/integration/JNDIBasedSecurityManagement.java
===================================================================
--- branches/JBPAPP_5/security/src/main/org/jboss/security/integration/JNDIBasedSecurityManagement.java	2014-02-06 17:20:51 UTC (rev 114709)
+++ branches/JBPAPP_5/security/src/main/org/jboss/security/integration/JNDIBasedSecurityManagement.java	2014-02-10 18:29:46 UTC (rev 114710)
@@ -45,6 +45,8 @@
 import org.jboss.security.audit.AuditManager;
 import org.jboss.security.auth.AuthenticationCacheFlushThread;
 import org.jboss.security.auth.AuthenticationTimedCachePolicy;
+import org.jboss.security.auth.AuthenticationTimedCachePolicyFactory;
+import org.jboss.security.auth.CachePolicyFactory;
 import org.jboss.security.auth.callback.JBossCallbackHandler;
 import org.jboss.security.config.SecurityConfiguration;
 import org.jboss.security.identitytrust.IdentityTrustManager;
@@ -93,6 +95,7 @@
    protected boolean enableAudit = true; 
    
    private CachePolicy cachePolicy = null;
+   private CachePolicyFactory cachePolicyFactory = new AuthenticationTimedCachePolicyFactory();
    
    private transient ConcurrentHashMap<String,AuthenticationManager> authMgrMap = null;
    private transient ConcurrentHashMap<String,AuthorizationManager> authzMgrMap = null;
@@ -283,7 +286,12 @@
    public void setCachePolicy(CachePolicy cp)
    {
       this.cachePolicy = cp;
-   } 
+   }
+
+   public void setCachePolicyFactory(CachePolicyFactory factory)
+   {
+      this.cachePolicyFactory = factory;
+   }
    
    public void setBaseContext(String ctx)
    {
@@ -367,7 +375,8 @@
    {   
       log.debug("Creating SDC for domain="+securityDomain);
       AuthenticationManager am = createAuthenticationManager(securityDomain);
-      CachePolicy cache = createDefaultCachePolicy();
+      CachePolicy cache = this.cachePolicyFactory.createCachePolicy(securityDomain, SecurityConstantsBridge.defaultCacheTimeout,
+              SecurityConstantsBridge.defaultCacheResolution);
       //Set security cache if the auth manager implementation supports it
       setSecurityDomainCache(am, cache);
       //Set DeepCopySubject option if supported
@@ -389,7 +398,6 @@
     * Legacy registration of JaasSecurityDomain instance with the JNDI
     * Object Factory internal hashmap
     * @param domain
-    * @param jsd
     * @throws Exception
     */
    @ManagementOperation(description = "Register the specified security domain",
@@ -397,15 +405,17 @@
    public void registerJaasSecurityDomainInstance(JaasSecurityDomain domain) throws Exception
    {
       String domainName = domain.getSecurityDomain();
-      SecurityDomainContext sdc = (SecurityDomainContext) securityMgrMap.get(domainName);
+      SecurityDomainContext sdc = securityMgrMap.get(domainName);
       if(sdc != null)
       {
          sdc.setAuthenticationManager(domain);
+         setSecurityDomainCache(domain, sdc.getAuthenticationCache());
       }
       else
       {
          sdc = createSecurityDomainContext(domainName);
          sdc.setAuthenticationManager(domain);
+         setSecurityDomainCache(domain, sdc.getAuthenticationCache());
       }
       securityMgrMap.put(domainName, sdc);
    }  
@@ -414,7 +424,6 @@
     * Legacy deregistration of JaasSecurityDomain instance with the JNDI
     * Object Factory internal hashmap
     * @param securityDomain
-    * @param jsd
     * @throws Exception
     */
    @ManagementOperation(description = "Deregister the specified security domain",
@@ -519,7 +528,6 @@
    /** Use reflection to attempt to set the authentication cache on the
     * securityMgr argument.
     * @param securityMgr the security manager
-    * @param cachePolicy the cache policy implementation
     */
    private static void setDeepCopySubjectMode(AuthenticationManager securityMgr)
    {
@@ -539,21 +547,6 @@
    }
    
    /**
-    * Create a Default Cache Policy
-    * @return
-    */
-   private CachePolicy createDefaultCachePolicy()
-   {
-      TimedCachePolicy cachePolicy = 
-          new AuthenticationTimedCachePolicy(SecurityConstantsBridge.defaultCacheTimeout,
-                               true, 
-                               SecurityConstantsBridge.defaultCacheResolution);
-      cachePolicy.create();
-      cachePolicy.start();
-      return cachePolicy; 
-   } 
-   
-   /**
     * Since the maps are transient, initialize them
     */
    private void initialize()

Modified: branches/JBPAPP_5/security/src/main/org/jboss/security/plugins/JaasSecurityManagerService.java
===================================================================
--- branches/JBPAPP_5/security/src/main/org/jboss/security/plugins/JaasSecurityManagerService.java	2014-02-06 17:20:51 UTC (rev 114709)
+++ branches/JBPAPP_5/security/src/main/org/jboss/security/plugins/JaasSecurityManagerService.java	2014-02-10 18:29:46 UTC (rev 114710)
@@ -554,13 +554,15 @@
     */
    public synchronized void registerSecurityDomain(String securityDomain, SecurityDomain instance)
    {
-      log.debug("Added "+securityDomain+", "+instance+" to map");
-      CachePolicy authCache = lookupCachePolicy(securityDomain);
-      
-      SecurityDomainContext sdc = new SecurityDomainContext(instance, authCache);
-      securityDomainCtxMap.put(securityDomain, sdc);
-      // See if the security mgr supports an externalized cache policy
-      setSecurityDomainCache(instance, authCache);
+      log.debug("Adding "+securityDomain+", "+instance+" to map");
+      try
+      {
+         securityManagement.registerJaasSecurityDomainInstance((JaasSecurityDomain) instance);
+      }
+      catch (Exception e)
+      {
+         log.warn("Failed to register security domain", e);
+      }
    }
 
    /** Access the CachePolicy for the securityDomain.



More information about the jboss-cvs-commits mailing list