[jboss-cvs] JBossAS SVN: r69871 - in trunk/server/src/main/org/jboss: invocation and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sun Feb 17 12:47:48 EST 2008


Author: anil.saldhana at jboss.com
Date: 2008-02-17 12:47:45 -0500 (Sun, 17 Feb 2008)
New Revision: 69871

Modified:
   trunk/server/src/main/org/jboss/ejb/Container.java
   trunk/server/src/main/org/jboss/invocation/InvocationKey.java
   trunk/server/src/main/org/jboss/proxy/SecurityInterceptor.java
   trunk/server/src/main/org/jboss/proxy/ejb/ProxyFactory.java
Log:
JBAS-5237: ejb proxies should pass security domain name for use by client side security interceptor

Modified: trunk/server/src/main/org/jboss/ejb/Container.java
===================================================================
--- trunk/server/src/main/org/jboss/ejb/Container.java	2008-02-16 16:20:54 UTC (rev 69870)
+++ trunk/server/src/main/org/jboss/ejb/Container.java	2008-02-17 17:47:45 UTC (rev 69871)
@@ -119,6 +119,7 @@
  * @author <a href="mailto:christoph.jung at infor.de">Christoph G. Jung</a>
  * @author <a href="mailto:dimitris at jboss.org">Dimitris Andreadis</a>
  * @author adrian at jboss.org
+ * @author anil.saldhana at jboss.org
  * @version $Revision$
  *
  * @jmx.mbean extends="org.jboss.system.ServiceMBean"

Modified: trunk/server/src/main/org/jboss/invocation/InvocationKey.java
===================================================================
--- trunk/server/src/main/org/jboss/invocation/InvocationKey.java	2008-02-16 16:20:54 UTC (rev 69870)
+++ trunk/server/src/main/org/jboss/invocation/InvocationKey.java	2008-02-17 17:47:45 UTC (rev 69871)
@@ -42,7 +42,7 @@
     * new key enum value you must assign it an ordinal value of the current
     * MAX_KEY_ID+1 and update the MAX_KEY_ID value.
     */
-   private static final int MAX_KEY_ID = 21;
+   private static final int MAX_KEY_ID = 22;
 
    /** The array of InvocationKey indexed by ordinal value of the key */
    private static final InvocationKey[] values = new InvocationKey[MAX_KEY_ID+1];
@@ -166,6 +166,11 @@
    public final static InvocationKey INTERVM =
       new InvocationKey("INTERVM", 20);
    
+   /**
+    * Indicate whether an inter-vm invocation
+    */
+   public final static InvocationKey SECURITY_DOMAIN =
+      new InvocationKey("SECURITY_DOMAIN", 21);
    
    /** The key enum symbolic value */
    private final transient String name;

Modified: trunk/server/src/main/org/jboss/proxy/SecurityInterceptor.java
===================================================================
--- trunk/server/src/main/org/jboss/proxy/SecurityInterceptor.java	2008-02-16 16:20:54 UTC (rev 69870)
+++ trunk/server/src/main/org/jboss/proxy/SecurityInterceptor.java	2008-02-17 17:47:45 UTC (rev 69871)
@@ -24,6 +24,7 @@
 import java.security.Principal; 
 
 import org.jboss.invocation.Invocation; 
+import org.jboss.invocation.InvocationKey;
 import org.jboss.security.RunAs; 
 import org.jboss.security.SecurityContext;   
 
@@ -106,7 +107,9 @@
       Object cred = invocation.getCredential(); 
       
       //Create a new SecurityContext
-      //TODO: Need to get SecurityDomain name??
-      return sa.createSecurityContext(p,cred, "CLIENT_PROXY");
+      String domain = (String) invocation.getInvocationContext().getValue(InvocationKey.SECURITY_DOMAIN);
+      if(domain == null)
+         domain = "CLIENT_PROXY";
+      return sa.createSecurityContext(p,cred, domain);
    } 
 }

Modified: trunk/server/src/main/org/jboss/proxy/ejb/ProxyFactory.java
===================================================================
--- trunk/server/src/main/org/jboss/proxy/ejb/ProxyFactory.java	2008-02-16 16:20:54 UTC (rev 69870)
+++ trunk/server/src/main/org/jboss/proxy/ejb/ProxyFactory.java	2008-02-17 17:47:45 UTC (rev 69871)
@@ -21,18 +21,18 @@
 */
 package org.jboss.proxy.ejb;
 
-import java.lang.reflect.Proxy;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Proxy;
+import java.rmi.ServerException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
-import java.rmi.ServerException;
 
 import javax.ejb.EJBHome;
+import javax.ejb.EJBMetaData;
 import javax.ejb.EJBObject;
-import javax.ejb.EJBMetaData;
 import javax.management.ObjectName;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
@@ -42,20 +42,20 @@
 import org.jboss.ejb.EJBProxyFactory;
 import org.jboss.ejb.EJBProxyFactoryContainer;
 import org.jboss.invocation.Invocation;
-import org.jboss.invocation.Invoker;
 import org.jboss.invocation.InvocationContext;
 import org.jboss.invocation.InvocationKey;
+import org.jboss.invocation.Invoker;
 import org.jboss.logging.Logger;
+import org.jboss.metadata.BeanMetaData;
+import org.jboss.metadata.EntityMetaData;
 import org.jboss.metadata.InvokerProxyBindingMetaData;
 import org.jboss.metadata.MetaData;
-import org.jboss.metadata.EntityMetaData;
 import org.jboss.metadata.SessionMetaData;
-import org.jboss.metadata.BeanMetaData;
 import org.jboss.naming.Util;
-import org.jboss.proxy.Interceptor;
 import org.jboss.proxy.ClientContainer;
 import org.jboss.proxy.ClientContainerEx;
 import org.jboss.proxy.IClientContainer;
+import org.jboss.proxy.Interceptor;
 import org.jboss.proxy.ejb.handle.HomeHandleImpl;
 import org.jboss.system.Registry;
 import org.jboss.util.NestedRuntimeException;
@@ -389,7 +389,13 @@
          context.setInvoker(homeInvoker);
          context.setValue(InvocationKey.EJB_METADATA, ejbMetaData);
          context.setInvokerProxyBinding(invokerMetaData.getName());
-
+         
+         if(container.getSecurityManager() != null)
+         {
+            String secDomain = container.getSecurityManager().getSecurityDomain();
+            context.setValue(InvocationKey.SECURITY_DOMAIN, secDomain); 
+         }
+         
          ClientContainer client = null;
          EJBProxyFactoryContainer pfc = (EJBProxyFactoryContainer) container;
          Class[] ifaces = {pfc.getHomeClass(), Class.forName("javax.ejb.Handle")};
@@ -427,6 +433,12 @@
             context.setInvoker(beanInvoker);
             context.setInvokerProxyBinding(invokerMetaData.getName());
             context.setValue(InvocationKey.EJB_HOME, home);
+            
+            if(container.getSecurityManager() != null)
+            {
+               String secDomain = container.getSecurityManager().getSecurityDomain();
+               context.setValue(InvocationKey.SECURITY_DOMAIN, secDomain); 
+            }
 
             Class[] ssifaces = {pfc.getRemoteClass()};
             if( includeIClientIface )
@@ -566,6 +578,12 @@
       context.setValue(InvocationKey.EJB_HOME, home);
       context.setValue("InvokerID", Invoker.ID);
 
+      if(container.getSecurityManager() != null)
+      {
+         String secDomain = container.getSecurityManager().getSecurityDomain();
+         context.setValue(InvocationKey.SECURITY_DOMAIN, secDomain); 
+      }
+      
       ClientContainer client;
       if( includeIClientIface )
       {
@@ -618,6 +636,12 @@
          context.setInvokerProxyBinding(invokerMetaData.getName());
          context.setValue(InvocationKey.EJB_HOME, home);
 
+         if(container.getSecurityManager() != null)
+         {
+            String secDomain = container.getSecurityManager().getSecurityDomain();
+            context.setValue(InvocationKey.SECURITY_DOMAIN, secDomain); 
+         }
+         
          ClientContainer client;
          if( includeIClientIface )
          {




More information about the jboss-cvs-commits mailing list