[jboss-cvs] JBossAS SVN: r65483 - in trunk/security/src/main/org/jboss/security: plugins and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Sep 19 16:59:34 EDT 2007


Author: anil.saldhana at jboss.com
Date: 2007-09-19 16:59:34 -0400 (Wed, 19 Sep 2007)
New Revision: 65483

Modified:
   trunk/security/src/main/org/jboss/security/integration/JNDIBasedSecurityManagement.java
   trunk/security/src/main/org/jboss/security/integration/SecurityDomainObjectFactory.java
   trunk/security/src/main/org/jboss/security/plugins/JaasSecurityDomain.java
   trunk/security/src/main/org/jboss/security/plugins/JaasSecurityManager.java
   trunk/security/src/main/org/jboss/security/plugins/SecurityDomainContext.java
Log:
JBAS-4738:Handle JaasSecurityDomain registration in jndi object factory

Modified: trunk/security/src/main/org/jboss/security/integration/JNDIBasedSecurityManagement.java
===================================================================
--- trunk/security/src/main/org/jboss/security/integration/JNDIBasedSecurityManagement.java	2007-09-19 20:50:07 UTC (rev 65482)
+++ trunk/security/src/main/org/jboss/security/integration/JNDIBasedSecurityManagement.java	2007-09-19 20:59:34 UTC (rev 65483)
@@ -22,6 +22,7 @@
 package org.jboss.security.integration;
 
 import java.lang.reflect.Constructor;
+import java.util.concurrent.ConcurrentHashMap;
 
 import javax.naming.Context;
 import javax.naming.InitialContext;
@@ -36,6 +37,7 @@
 import org.jboss.security.auth.callback.SecurityAssociationHandler;
 import org.jboss.security.identitytrust.IdentityTrustManager;
 import org.jboss.security.mapping.MappingManager;
+import org.jboss.security.plugins.JaasSecurityDomain;
 import org.jboss.security.plugins.SecurityDomainContext;
 import org.jboss.util.CachePolicy;
 import org.jboss.util.TimedCachePolicy;
@@ -49,9 +51,13 @@
  *  @version $Revision$
  */
 public class JNDIBasedSecurityManagement implements ISecurityManagement
-{
+{ 
+   private static final long serialVersionUID = 1L;
+
    protected static Logger log = Logger.getLogger(JNDIBasedSecurityManagement.class);
    
+   static ConcurrentHashMap securityMgrMap = new ConcurrentHashMap();
+    
    protected String BASE_CTX = SecurityConstants.JAAS_CONTEXT_ROOT; 
    
    protected String authenticationMgrClass = "org.jboss.security.plugins.JaasSecurityManager";
@@ -66,10 +72,8 @@
    
    protected CallbackHandler callBackHandler = new SecurityAssociationHandler();
    
-   protected String cachePolicyName = TimedCachePolicy.class.getName();
+   protected String cachePolicyName = TimedCachePolicy.class.getName(); 
    
-   protected SecurityDomainContext securityDomainContext = null;
-   
    public JNDIBasedSecurityManagement()
    {
    } 
@@ -188,7 +192,7 @@
    
    public SecurityDomainContext createSecurityDomainContext(String domain) throws Exception
    {
-     securityDomainContext = new SecurityDomainContext(createAuthenticationManager(domain), 
+      SecurityDomainContext securityDomainContext = new SecurityDomainContext(createAuthenticationManager(domain), 
             (CachePolicy)createObject(this.cachePolicyName)); 
       
       securityDomainContext.setAuthorizationManager(createAuthorizationManager(domain));
@@ -197,11 +201,28 @@
       securityDomainContext.setMappingMgr(createMappingManager(domain));
       return securityDomainContext;
    }
-       
-   public SecurityDomainContext getSecurityDomainContext()
+   
+   /**
+    * Legacy registration of JaasSecurityDomain instance with the JNDI
+    * Object Factory internal hashmap
+    * @param domain
+    * @param jsd
+    * @throws Exception
+    */
+   public void registerJaasSecurityDomainInstance(String domain, JaasSecurityDomain jsd) throws Exception
    {
-      return securityDomainContext;
-   }
+      SecurityDomainContext sdc = (SecurityDomainContext) securityMgrMap.get(domain);
+      if(sdc != null)
+      {
+         sdc.setAuthenticationManager(jsd);
+      }
+      else
+      {
+         sdc = createSecurityDomainContext(domain);
+         sdc.setAuthenticationManager(jsd);
+      }
+      securityMgrMap.put(domain, sdc);
+   }     
  
    private Object lookUpJNDI(String ctxName) 
    {

Modified: trunk/security/src/main/org/jboss/security/integration/SecurityDomainObjectFactory.java
===================================================================
--- trunk/security/src/main/org/jboss/security/integration/SecurityDomainObjectFactory.java	2007-09-19 20:50:07 UTC (rev 65482)
+++ trunk/security/src/main/org/jboss/security/integration/SecurityDomainObjectFactory.java	2007-09-19 20:59:34 UTC (rev 65483)
@@ -25,7 +25,6 @@
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
 import java.util.Hashtable;
-import java.util.concurrent.ConcurrentHashMap;
 
 import javax.naming.Context;
 import javax.naming.InitialContext;
@@ -49,8 +48,6 @@
 public class SecurityDomainObjectFactory
 implements InvocationHandler, ObjectFactory
 {
-   private static ConcurrentHashMap securityMgrMap = new ConcurrentHashMap();
-   
    private JNDIBasedSecurityManagement securityManagement = new JNDIBasedSecurityManagement();
    
    public void setSecurityManagement(JNDIBasedSecurityManagement sm)
@@ -100,7 +97,7 @@
             name = (Name)args[0];
          securityDomain = name.get(0);
          Object val = (SecurityDomainContext)args[1];
-         this.securityMgrMap.put(securityDomain, val);   
+         JNDIBasedSecurityManagement.securityMgrMap.put(securityDomain, val); 
          return obj;
       }
       if( methodName.equals("lookup") == false )
@@ -125,11 +122,11 @@
    private SecurityDomainContext lookupSecurityDomain(String securityDomain)
    throws Exception
    {
-      SecurityDomainContext sdc = (SecurityDomainContext) securityMgrMap.get(securityDomain);
+      SecurityDomainContext sdc = (SecurityDomainContext) JNDIBasedSecurityManagement.securityMgrMap.get(securityDomain);
       if( sdc == null )
       {
          sdc = securityManagement.createSecurityDomainContext(securityDomain);
-         securityMgrMap.put(securityDomain, sdc); 
+         JNDIBasedSecurityManagement.securityMgrMap.put(securityDomain, sdc); 
       }
       return sdc;
    }

Modified: trunk/security/src/main/org/jboss/security/plugins/JaasSecurityDomain.java
===================================================================
--- trunk/security/src/main/org/jboss/security/plugins/JaasSecurityDomain.java	2007-09-19 20:50:07 UTC (rev 65482)
+++ trunk/security/src/main/org/jboss/security/plugins/JaasSecurityDomain.java	2007-09-19 20:59:34 UTC (rev 65483)
@@ -45,9 +45,11 @@
 import javax.security.auth.callback.CallbackHandler;
 
 import org.jboss.mx.util.MBeanServerLocator;
+import org.jboss.security.ISecurityManagement;
 import org.jboss.security.SecurityDomain;
 import org.jboss.crypto.CryptoUtil;
 import org.jboss.security.auth.callback.SecurityAssociationHandler;
+import org.jboss.security.integration.JNDIBasedSecurityManagement;
 
 /** The JaasSecurityDomain is an extension of JaasSecurityManager that addes
  the notion of a KeyStore, and JSSE KeyManagerFactory and TrustManagerFactory
@@ -151,6 +153,9 @@
    private char[] trustStorePassword;
    private URL trustStoreURL;
    private TrustManagerFactory trustMgr;
+    
+   /** Specify the SecurityManagement instance */
+   private ISecurityManagement securityManagement = new JNDIBasedSecurityManagement();
 
    /** Creates a default JaasSecurityDomain for with a securityDomain
     name of 'other'.
@@ -306,7 +311,17 @@
    public String getName()
    {
       return "JaasSecurityDomain(" + getSecurityDomain() + ")";
+   } 
+
+   public ISecurityManagement getSecurityManagement()
+   {
+      return securityManagement;
    }
+   
+   public void setSecurityManagement(ISecurityManagement securityManagement)
+   {
+      this.securityManagement = securityManagement;
+   }
 
    /** Encrypt the secret using the cipherKey.
     * @param secret - the plaintext secret to encrypt
@@ -402,6 +417,12 @@
          String[] signature = new String[]{"java.lang.String", "org.jboss.security.SecurityDomain"};
          server.invoke(managerServiceName, "registerSecurityDomain", params, signature);
       }
+      //Register yourself with the security management
+      if(securityManagement instanceof JNDIBasedSecurityManagement)
+      {
+         JNDIBasedSecurityManagement jbs = (JNDIBasedSecurityManagement) securityManagement;
+         jbs.registerJaasSecurityDomainInstance(getSecurityDomain(), this);
+      }
    }
 
    protected void stopService()

Modified: trunk/security/src/main/org/jboss/security/plugins/JaasSecurityManager.java
===================================================================
--- trunk/security/src/main/org/jboss/security/plugins/JaasSecurityManager.java	2007-09-19 20:50:07 UTC (rev 65482)
+++ trunk/security/src/main/org/jboss/security/plugins/JaasSecurityManager.java	2007-09-19 20:59:34 UTC (rev 65483)
@@ -21,30 +21,33 @@
 */
 package org.jboss.security.plugins;
 
-import java.io.Serializable;
 import java.lang.reflect.Method;
 import java.lang.reflect.UndeclaredThrowableException;
 import java.security.Principal;
 import java.security.acl.Group;
 import java.util.Arrays;
-import java.util.Enumeration;  
+import java.util.Enumeration;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
+
 import javax.security.auth.Subject;
 import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.login.LoginContext;
 import javax.security.auth.login.LoginException;
 import javax.security.auth.message.MessageInfo;
 
-import org.jboss.logging.Logger; 
-import org.jboss.security.AuthorizationManager; 
-import org.jboss.security.RealmMapping; 
+import org.jboss.logging.Logger;
+import org.jboss.security.AuthenticationManager;
+import org.jboss.security.AuthorizationManager;
+import org.jboss.security.ISecurityManagement;
+import org.jboss.security.RealmMapping;
 import org.jboss.security.SecurityConstants;
 import org.jboss.security.SecurityContext;
 import org.jboss.security.SecurityUtil;
 import org.jboss.security.SubjectSecurityManager;
 import org.jboss.security.auth.callback.SecurityAssociationHandler;
+import org.jboss.security.integration.JNDIBasedSecurityManagement;
 import org.jboss.system.ServiceMBeanSupport;
 import org.jboss.util.CachePolicy;
 import org.jboss.util.TimedCachePolicy;
@@ -65,7 +68,7 @@
  @version $Revision: 62860 $
 */
 public class JaasSecurityManager extends ServiceMBeanSupport
-   implements SubjectSecurityManager, RealmMapping, Serializable
+   implements SubjectSecurityManager, RealmMapping
 {
    /** The authentication cache object.
     */

Modified: trunk/security/src/main/org/jboss/security/plugins/SecurityDomainContext.java
===================================================================
--- trunk/security/src/main/org/jboss/security/plugins/SecurityDomainContext.java	2007-09-19 20:50:07 UTC (rev 65482)
+++ trunk/security/src/main/org/jboss/security/plugins/SecurityDomainContext.java	2007-09-19 20:59:34 UTC (rev 65483)
@@ -123,6 +123,11 @@
       return realmMapping;
    }
    
+   public void setAuthenticationManager(AuthenticationManager aum)
+   {
+      this.securityMgr = aum;
+   }
+   
    public void setAuthorizationManager(AuthorizationManager am)
    {
       this.authorizationMgr = am;
@@ -132,6 +137,11 @@
    {
       return authorizationMgr;
    }
+   
+   public void setAuthenticationCache(CachePolicy cp)
+   {
+      this.authenticationCache = cp;
+   }
     
    public CachePolicy getAuthenticationCache()
    {




More information about the jboss-cvs-commits mailing list