[jboss-cvs] JBossAS SVN: r65982 - trunk/security/src/main/org/jboss/security/integration.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Oct 9 15:46:57 EDT 2007


Author: anil.saldhana at jboss.com
Date: 2007-10-09 15:46:57 -0400 (Tue, 09 Oct 2007)
New Revision: 65982

Modified:
   trunk/security/src/main/org/jboss/security/integration/JNDIBasedSecurityManagement.java
Log:
specify DeepCopySubject option

Modified: trunk/security/src/main/org/jboss/security/integration/JNDIBasedSecurityManagement.java
===================================================================
--- trunk/security/src/main/org/jboss/security/integration/JNDIBasedSecurityManagement.java	2007-10-09 19:46:15 UTC (rev 65981)
+++ trunk/security/src/main/org/jboss/security/integration/JNDIBasedSecurityManagement.java	2007-10-09 19:46:57 UTC (rev 65982)
@@ -36,6 +36,7 @@
 import org.jboss.security.SecurityConstants;
 import org.jboss.security.audit.AuditManager;
 import org.jboss.security.auth.callback.SecurityAssociationHandler;
+import org.jboss.security.config.SecurityConfiguration;
 import org.jboss.security.identitytrust.IdentityTrustManager;
 import org.jboss.security.mapping.MappingManager;
 import org.jboss.security.plugins.JaasSecurityDomain;
@@ -194,9 +195,17 @@
    public SecurityDomainContext createSecurityDomainContext(String domain) throws Exception
    {
       CachePolicy cachePolicy = (CachePolicy)createObject(this.cachePolicyName);
-      cachePolicy.create();
+      if(cachePolicy != null )
+        cachePolicy.create();
       AuthenticationManager am = createAuthenticationManager(domain);
+      //Set security cache if the auth manager implementation supports it
       setSecurityDomainCache(am, cachePolicy);
+      //Set DeepCopySubject option if supported
+      if(SecurityConfiguration.isDeepCopySubjectMode())
+      {
+        setDeepCopySubjectMode(am);  
+      }
+      
       SecurityDomainContext securityDomainContext = new SecurityDomainContext(am, cachePolicy); 
       
       securityDomainContext.setAuthorizationManager(createAuthorizationManager(domain));
@@ -305,4 +314,26 @@
             log.trace("Optional setCachePolicy failed" + e2.getLocalizedMessage());
       }
    }
+   
+   /** 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)
+   {
+      try
+      {
+         Class[] argsType = {Boolean.class};
+         Method m = securityMgr.getClass().getMethod("setDeepCopySubjectOption", argsType);
+         Object[] deepCopyArgs = {Boolean.TRUE};
+         m.invoke(securityMgr, deepCopyArgs);
+         log.trace("setDeepCopySubjectOption, option="+deepCopyArgs[0]);
+      }
+      catch(Exception e2)
+      {    
+         if(log.isTraceEnabled())
+            log.trace("Optional setDeepCopySubjectMode failed" + e2.getLocalizedMessage());
+      }
+   }
 }
\ No newline at end of file




More information about the jboss-cvs-commits mailing list