[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