[jboss-svn-commits] JBL Code SVN: r33505 - in labs/jbossesb/branches/JBESB_4_7_CP/product: lib/ext and 5 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jun 15 07:40:10 EDT 2010


Author: kevin.conner at jboss.com
Date: 2010-06-15 07:40:10 -0400 (Tue, 15 Jun 2010)
New Revision: 33505

Removed:
   labs/jbossesb/branches/JBESB_4_7_CP/product/lib/ext/jboss-security-spi.jar
   labs/jbossesb/branches/JBESB_4_7_CP/product/lib/ext/jbosssx.jar
Modified:
   labs/jbossesb/branches/JBESB_4_7_CP/product/.classpath
   labs/jbossesb/branches/JBESB_4_7_CP/product/ivy.xml
   labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/build.xml
   labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/internal/soa/esb/services/security/JBossASContextPropagator.java
   labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/common/Configuration.java
   labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/common/Environment.java
   labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/tests/src/org/jboss/internal/soa/esb/services/security/JBossASContextPropagatorUnitTest.java
   labs/jbossesb/branches/JBESB_4_7_CP/product/services/base-project-build.xml
Log:
Add support for SecurityContextAssociation in AS5 environments: JBESB-3346

Modified: labs/jbossesb/branches/JBESB_4_7_CP/product/.classpath
===================================================================
--- labs/jbossesb/branches/JBESB_4_7_CP/product/.classpath	2010-06-15 07:43:33 UTC (rev 33504)
+++ labs/jbossesb/branches/JBESB_4_7_CP/product/.classpath	2010-06-15 11:40:10 UTC (rev 33505)
@@ -50,8 +50,8 @@
 	<classpathentry kind="lib" path="build/lib/hibernate3-3.2.4.SP1.jar"/>
 	<classpathentry kind="lib" path="build/lib/javassist-3.6.0.GA.jar"/>
 	<classpathentry kind="lib" path="build/lib/jaxb-api-2.1.jar"/>
-	<classpathentry kind="lib" path="build/lib/jboss-4.2.2.GA.jar"/>
-	<classpathentry kind="lib" path="build/lib/jbossall-client-4.2.2.GA.jar"/>
+	<classpathentry kind="lib" path="build/lib/jboss-4.2.3.GA.jar"/>
+	<classpathentry kind="lib" path="build/lib/jbossall-client-4.2.3.GA.jar"/>
 	<classpathentry kind="lib" path="build/lib/jboss-cache-1.2.4.SP2.jar"/>
 	<classpathentry kind="lib" path="build/lib/jboss-classloader-2.0.6.GA.jar"/>
 	<classpathentry kind="lib" path="build/lib/jboss-classloading-2.0.6.GA.jar"/>
@@ -77,8 +77,8 @@
 	<classpathentry kind="lib" path="build/lib/jboss-metatype-2.1.0.SP1.jar"/>
 	<classpathentry kind="lib" path="build/lib/jboss-profileservice-spi-5.1.0.GA.jar"/>
 	<classpathentry kind="lib" path="build/lib/jboss-reflect-2.0.2.GA.jar"/>
-	<classpathentry kind="lib" path="build/lib/jbosssx-4.2.3.GA.jar"/>
-	<classpathentry kind="lib" path="build/lib/jboss-system-4.2.2.GA.jar"/>
+	<classpathentry kind="lib" path="build/lib/jbosssx-2.0.3.SP1.jar"/>
+	<classpathentry kind="lib" path="build/lib/jboss-system-4.2.3.GA.jar"/>
 	<classpathentry kind="lib" path="build/lib/jboss-test-1.1.4.GA.jar"/>
 	<classpathentry kind="lib" path="build/lib/jboss-vfs-2.1.2.GA.jar"/>
 	<classpathentry kind="lib" path="build/lib/jcr-1.0.jar"/>

Modified: labs/jbossesb/branches/JBESB_4_7_CP/product/ivy.xml
===================================================================
--- labs/jbossesb/branches/JBESB_4_7_CP/product/ivy.xml	2010-06-15 07:43:33 UTC (rev 33504)
+++ labs/jbossesb/branches/JBESB_4_7_CP/product/ivy.xml	2010-06-15 11:40:10 UTC (rev 33505)
@@ -37,9 +37,9 @@
 
         <dependency org="jboss.aop" name="jboss-aop-jdk50" rev="1.5.6.GA"/>
         <!-- dependency org="jboss.messaging" name="jboss-messaging-client" rev="1.4.1.CR1"/ -->
-        <dependency org="jboss" name="jboss-system" rev="4.2.2.GA"/>
-        <dependency org="jboss" name="jboss" rev="4.2.2.GA"/>
-        <dependency org="jboss" name="jbossall-client" rev="4.2.2.GA"/>
+        <dependency org="jboss" name="jboss-system" rev="4.2.3.GA"/>
+        <dependency org="jboss" name="jboss" rev="4.2.3.GA"/>
+        <dependency org="org.jboss.client" name="jbossall-client" rev="4.2.3.GA"/>
         <dependency org="com.jcraft" name="jsch" rev="0.1.38"/>
         <!-- temporary until 3.0.1 is pushed into maven.  Also need to add juddiv3.war
 	<dependency org="org.apache.juddi" name="uddi-ws" rev="3.0.1"/>
@@ -156,8 +156,8 @@
 
         <dependency org="javax.xml.bind" name="jaxb-api" rev="2.1"/>
 
-        <dependency org="org.jboss.security" name="jboss-security-spi" rev="2.1.0.20090318"/>
-        <dependency org="jboss" name="jbosssx" rev="4.2.3.GA"/>
+        <dependency org="org.jboss.security" name="jboss-security-spi" rev="2.0.3.SP1"/>
+        <dependency org="org.jboss.security" name="jbosssx" rev="2.0.3.SP1"/>
 
 		<!-- JBoss Identity Federation -->
         <dependency org="org.picketlink" name="picketlink-fed-api" rev="1.0.1"/>

Deleted: labs/jbossesb/branches/JBESB_4_7_CP/product/lib/ext/jboss-security-spi.jar
===================================================================
(Binary files differ)

Deleted: labs/jbossesb/branches/JBESB_4_7_CP/product/lib/ext/jbosssx.jar
===================================================================
(Binary files differ)

Modified: labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/build.xml
===================================================================
--- labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/build.xml	2010-06-15 07:43:33 UTC (rev 33504)
+++ labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/build.xml	2010-06-15 11:40:10 UTC (rev 33505)
@@ -29,10 +29,13 @@
     <property name="org.jboss.esb.lib.dir" location="${org.jboss.esb.internal.dest}/lib"/>
 	<property name="org.jboss.esb.ext.lib.dir" location="${org.jboss.esb.root.dir}/lib/ext"/>
 	
+	<property name="security.jars" value="jboss-security-spi*.jar jbosssx*.jar"/>
+
 	<path id="org.jboss.esb.rosetta.base.classpath">
         <fileset dir="${org.jboss.esb.ext.lib.dir}" includes="*.jar"/>
         <fileset dir="${org.jboss.esb.ext.lib.dir}/endorsed" includes="jboss-saaj.jar"/>
-        <fileset dir="${org.jboss.esb.lib.dir}" includes="*.jar"/>
+        <fileset dir="${org.jboss.esb.lib.dir}" includes="${security.jars}"/>
+        <fileset dir="${org.jboss.esb.lib.dir}" includes="*.jar" excludes="${security.jars}"/>
         <fileset dir="../../testlib" includes="emma*.jar"/>
         <fileset dir="${org.jboss.esb.ext.lib.dir}/standalone" includes="*.jar"/>
 		<pathelement location="${schema101.classes.dir}"/>

Modified: labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/internal/soa/esb/services/security/JBossASContextPropagator.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/internal/soa/esb/services/security/JBossASContextPropagator.java	2010-06-15 07:43:33 UTC (rev 33504)
+++ labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/internal/soa/esb/services/security/JBossASContextPropagator.java	2010-06-15 11:40:10 UTC (rev 33505)
@@ -20,18 +20,25 @@
  */
 package org.jboss.internal.soa.esb.services.security;
 
+import java.security.AccessController;
 import java.security.Principal;
-import java.util.Iterator;
+import java.security.PrivilegedAction;
 import java.util.Set;
 
 import javax.security.auth.Subject;
 
+import org.apache.log4j.Logger;
 import org.jboss.internal.soa.esb.assertion.AssertArgument;
 import org.jboss.security.RunAsIdentity;
 import org.jboss.security.SecurityAssociation;
+import org.jboss.security.SecurityConstants;
+import org.jboss.security.SecurityContextAssociation;
+import org.jboss.security.SecurityContextFactory;
+import org.jboss.soa.esb.common.Configuration;
 import org.jboss.soa.esb.services.security.SecurityConfig;
 import org.jboss.soa.esb.services.security.SecurityContext;
 import org.jboss.soa.esb.services.security.principals.User;
+import org.jboss.soa.esb.util.ClassUtil;
 
 /**
  * JBoss Application Server(AS) specifiec security context propagator.
@@ -41,6 +48,46 @@
 public final class JBossASContextPropagator implements SecurityContextPropagator
 {
     /**
+     * Logger for this class.
+     */
+    private static final Logger LOGGER = Logger.getLogger(JBossASContextPropagator.class) ;
+    
+    /**
+     * The default implementation of the security context operations.
+     */
+    private static final JBossASSecurityContextOperations OPERATIONS ;
+
+    static
+    {
+        JBossASSecurityContextOperations operations = null ;
+        
+        final String implementation = Configuration.getJBossASSecurityContextOperationsImplementationClass() ;
+        if (implementation != null)
+        {
+            try
+            {
+                final Class<?> implementationClass = ClassUtil.forName(implementation, JBossASContextPropagator.class) ;
+                operations = (JBossASSecurityContextOperations)implementationClass.newInstance() ;
+            }
+            catch (final Throwable th)
+            {
+                LOGGER.error("Unexpected exception creating security context operations implementation, falling back to default", th) ;
+            }
+        }
+        
+        if (operations == null)
+        {
+            operations = (isSecurityContextAssociationPresent() ? new AS5SecurityContextOperations() : new AS4SecurityContextOperations()) ;
+        }
+        
+        if (LOGGER.isDebugEnabled())
+        {
+            LOGGER.debug("Default JBossASSecurityContextOperations initialised to " + operations.getClass().getName()) ;
+        }
+        OPERATIONS = operations ;
+    }
+
+    /**
      * Pushed the subject by calling {@link SecurityAssociation#pushSubjectContext(Subject, Principal, Object)}.
      *
      * @param context The SecurityContext holding the subject to push/propagate. May not be null.
@@ -48,25 +95,50 @@
      */
     public void pushSecurityContext(final SecurityContext context, Set<?> authCredentials, final SecurityConfig config)
     {
+        pushSecurityContext(context, authCredentials, config, OPERATIONS) ;
+    }
+
+    /**
+     * Pushed the subject by calling {@link SecurityAssociation#pushSubjectContext(Subject, Principal, Object)}.
+     *
+     * @param context The SecurityContext holding the subject to push/propagate. May not be null.
+     * @param config The SecurityConfig which contains the information specified from the security configuration element. Can be null.
+     * @param operations The implementation of the security context operations or null.
+     */
+    public void pushSecurityContext(final SecurityContext context, Set<?> authCredentials, final SecurityConfig config, final JBossASSecurityContextOperations operations)
+    {
         AssertArgument.isNotNull(context, "context");
 
         final Subject subject = context.getSubject();
         final Principal principal = getPrincipal(subject);
 
         //  associate the subject with jboss security
-        Object credential = null;
+        final Object credential ;
         if (authCredentials != null && authCredentials.isEmpty() == false)
         {
             credential = authCredentials.iterator().next();
         }
-        SecurityAssociation.pushSubjectContext(subject, principal, credential);
-
-
-        if (isRunAsSet(config))
+        else
         {
-            //  associate the runAs role with jboss security
-            SecurityAssociation.pushRunAsIdentity(new RunAsIdentity(config.getRunAs(), principal.getName()));
+            credential = null ;
         }
+        
+        final JBossASSecurityContextOperations ops = getSecurityContextOperations(operations) ;
+        
+        final String domain = context.getDomain() ;
+        if (System.getSecurityManager() == null)
+        {
+            ops.pushSecurityContext(principal, credential, subject, domain, config) ;
+        }
+        else
+        {
+            AccessController.doPrivileged(new PrivilegedAction<Object>() {
+                public Object run() {
+                    ops.pushSecurityContext(principal, credential, subject, domain, config) ;
+                    return null ;
+                }
+            }) ;
+        }
     }
 
     /**
@@ -77,16 +149,45 @@
      */
     public void popSecurityContext(final SecurityContext context, final SecurityConfig config)
     {
-        //  diassociate the subject with jboss security
-        SecurityAssociation.popSubjectContext();
+        popSecurityContext(context, config, OPERATIONS) ;
+    }
 
-        if (isRunAsSet(config))
+    /**
+     * Pops the subject by calling {@link SecurityAssociation#pushSubjectContext(Subject, Principal, Object)}.
+     *
+     * @param context The SecurityContext holding the subject to push/propagate. Can be null.
+     * @param config The SecurityConfig which contains the information specified from the security configuration element. Can be null.
+     * @param operations The implementation of the security context operations or null.
+     */
+    public void popSecurityContext(final SecurityContext context, final SecurityConfig config, final JBossASSecurityContextOperations operations)
+    {
+        final JBossASSecurityContextOperations ops = getSecurityContextOperations(operations) ;
+        
+        if (System.getSecurityManager() == null)
         {
-            //  associate the runAs role with jboss security
-            SecurityAssociation.popRunAsIdentity();
+            ops.popSecurityContext(config) ;
         }
+        else
+        {
+            AccessController.doPrivileged(new PrivilegedAction<Object>() {
+                public Object run() {
+                    ops.popSecurityContext(config) ;
+                    return null ;
+                }
+            }) ;
+        }
     }
 
+    /**
+     * Get the implementation of the security context operations.
+     * @param operations The specified implementation or null.
+     * @return The specified implementation or default implementation.
+     */
+    private JBossASSecurityContextOperations getSecurityContextOperations(final JBossASSecurityContextOperations operations)
+    {
+        return (operations != null ? operations : OPERATIONS) ;
+    }
+
     private Principal getPrincipal( final Subject subject)
     {
         for (Principal principal : subject.getPrincipals())
@@ -96,9 +197,103 @@
         return new User("NullPrincipal");
     }
 
-    private boolean isRunAsSet(final SecurityConfig config)
+    /**
+     * The security context operations interface.
+     * @author kevin
+     */
+    public interface JBossASSecurityContextOperations
     {
-        return config != null && config.getRunAs() != null;
+        public void pushSecurityContext(final Principal principal, final Object credential,
+            final Subject subject, final String domain, final SecurityConfig securityConfig) ;
+        
+        public void popSecurityContext(final SecurityConfig securityConfig) ;
     }
 
+    /**
+     * The AS4 implementation of the security context operations.
+     * @author kevin
+     */
+    public static class AS4SecurityContextOperations implements JBossASSecurityContextOperations
+    {
+        public void pushSecurityContext(final Principal principal, final Object credential,
+            final Subject subject, final String domain, final SecurityConfig securityConfig)
+        {
+            try
+            {
+                SecurityAssociation.pushSubjectContext(subject, principal, credential) ;
+                if ((securityConfig != null) && securityConfig.hasRunAs())
+                {
+                    SecurityAssociation.pushRunAsIdentity(new RunAsIdentity(securityConfig.getRunAs(), principal.getName()));
+                }
+            }
+            catch (final Exception ex)
+            {
+              throw new RuntimeException("Unexpected exception creating security context", ex) ;
+            }
+        }
+        
+        public void popSecurityContext(final SecurityConfig securityConfig)
+        {
+            if ((securityConfig != null) && securityConfig.hasRunAs())
+            {
+                SecurityAssociation.popRunAsIdentity() ;
+            }
+            SecurityAssociation.popSubjectContext() ;
+        }
+    }
+
+    /**
+     * The AS5 implementation of the security context operations.
+     * @author kevin
+     */
+    public static class AS5SecurityContextOperations implements JBossASSecurityContextOperations
+    {
+        public void pushSecurityContext(final Principal principal, final Object credential,
+            final Subject subject, final String domain, final SecurityConfig securityConfig)
+        {
+            final String securityDomain = domain == null ? SecurityConstants.DEFAULT_APPLICATION_POLICY : domain ;
+            try
+            {
+                final org.jboss.security.SecurityContext securityContext =
+                    SecurityContextFactory.createSecurityContext(principal, credential, subject, securityDomain) ;
+                SecurityContextAssociation.setSecurityContext(securityContext) ;
+                if ((securityConfig != null) && securityConfig.hasRunAs())
+                {
+                    securityContext.setOutgoingRunAs(new RunAsIdentity(securityConfig.getRunAs(), principal.getName()));
+                }
+            }
+            catch (final Exception ex)
+            {
+              throw new RuntimeException("Unexpected exception creating security context", ex) ;
+            }
+        }
+        
+        public void popSecurityContext(final SecurityConfig securityConfig)
+        {
+            final org.jboss.security.SecurityContext securityContext = SecurityContextAssociation.getSecurityContext() ;
+            if(securityContext != null)
+            {
+                if ((securityConfig != null) && securityConfig.hasRunAs())
+                {
+                    securityContext.setOutgoingRunAs(null) ;
+                }
+                SecurityContextAssociation.clearSecurityContext() ;
+            }
+        }
+    }
+
+    private static boolean isSecurityContextAssociationPresent()
+    {
+        try
+        {
+            ClassUtil.forName("org.jboss.security.SecurityContextAssociation", JBossASContextPropagator.class) ;
+            return true ;
+        }
+        catch (final ClassNotFoundException cnfe) {} // ignore
+        catch (final Throwable th)
+        {
+            LOGGER.debug("Exception checking for SecurityContextAssociation", th) ;
+        }
+        return false ;
+    }
 }

Modified: labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/common/Configuration.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/common/Configuration.java	2010-06-15 07:43:33 UTC (rev 33504)
+++ labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/common/Configuration.java	2010-06-15 11:40:10 UTC (rev 33505)
@@ -33,6 +33,7 @@
 
 import org.apache.log4j.Logger;
 import org.jboss.internal.soa.esb.services.registry.InVMRegistryInterceptor;
+import org.jboss.internal.soa.esb.services.security.JBossASContextPropagator.JBossASSecurityContextOperations;
 import org.jboss.soa.esb.ConfigurationException;
 import org.jboss.soa.esb.helpers.KeyValuePair;
 import org.jboss.soa.esb.helpers.NamingContextException;
@@ -582,8 +583,18 @@
 	{
 		return ModulePropertyManager.getPropertyManager(ModulePropertyManager.SECURITY_MODULE).getProperty(Environment.SECURITY_SERVICE_CONTEXT_PROPAGATOR_CLASS);
 	}
-	
+
 	/**
+	 * The JBossASSecurityContextOperations implementation class to use.
+	 *
+	 * @return String The fully qualified name of the JBossASSecurityContextOperations implementation class
+	 */
+	public static String getJBossASSecurityContextOperationsImplementationClass()
+	{
+		return ModulePropertyManager.getPropertyManager(ModulePropertyManager.SECURITY_MODULE).getProperty(Environment.SECURITY_JBOSSAS_SECURITY_CONTEXT_OPERATIONS_CLASS);
+	}
+
+    /**
 	 * Get the bind address.
 	 * @return the bind address.
 	 */

Modified: labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/common/Environment.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/common/Environment.java	2010-06-15 07:43:33 UTC (rev 33504)
+++ labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/common/Environment.java	2010-06-15 11:40:10 UTC (rev 33505)
@@ -252,6 +252,7 @@
         public static final String SECURITY_SERVICE_SEAL_KEYSIZE                        = "org.jboss.soa.esb.services.security.sealKeySize";
 	public static final String SECURITY_SERVICE_CONTEXT_TIMEOUT			= "org.jboss.soa.esb.services.security.contextTimeout";
 	public static final String SECURITY_SERVICE_CONTEXT_PROPAGATOR_CLASS= "org.jboss.soa.esb.services.security.contextPropagatorImplementationClass";
+	public static final String SECURITY_JBOSSAS_SECURITY_CONTEXT_OPERATIONS_CLASS = "org.jboss.internal.soa.esb.services.security.jbossasSecurityContextOperationsImplementationClass" ;
 
         public static final String SECURITY_SERVICE_PUBLIC_KEYSTORE             = "org.jboss.soa.esb.services.security.publicKeystore";
         public static final String SECURITY_SERVICE_PUBLIC_KEYSTORE_TYPE        = "org.jboss.soa.esb.services.security.publicKeystoreType";

Modified: labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/tests/src/org/jboss/internal/soa/esb/services/security/JBossASContextPropagatorUnitTest.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/tests/src/org/jboss/internal/soa/esb/services/security/JBossASContextPropagatorUnitTest.java	2010-06-15 07:43:33 UTC (rev 33504)
+++ labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/tests/src/org/jboss/internal/soa/esb/services/security/JBossASContextPropagatorUnitTest.java	2010-06-15 11:40:10 UTC (rev 33505)
@@ -24,7 +24,12 @@
 
 import javax.security.auth.Subject;
 
+import org.jboss.internal.soa.esb.services.security.JBossASContextPropagator.AS4SecurityContextOperations;
+import org.jboss.internal.soa.esb.services.security.JBossASContextPropagator.AS5SecurityContextOperations;
+import org.jboss.internal.soa.esb.services.security.JBossASContextPropagator.JBossASSecurityContextOperations;
 import org.jboss.security.SecurityAssociation;
+import org.jboss.security.SecurityContextAssociation;
+import org.jboss.security.SubjectInfo;
 import org.jboss.soa.esb.helpers.ConfigTree;
 import org.jboss.soa.esb.services.security.SecurityConfig;
 import org.jboss.soa.esb.services.security.SecurityConfigTestUtil;
@@ -45,6 +50,8 @@
 public class JBossASContextPropagatorUnitTest
 {
     private JBossASContextPropagator propagator = new JBossASContextPropagator();
+    private JBossASSecurityContextOperations as4Operations = new AS4SecurityContextOperations() ;
+    private JBossASSecurityContextOperations as5Operations = new AS5SecurityContextOperations() ;
 
     @Test
     public void pushAndPop()
@@ -52,12 +59,12 @@
         final SecurityConfig securityConfig = getSecurityConfig();
         final SecurityContext context = getSecurityContext();
 
-        propagator.pushSecurityContext(context, null, securityConfig);
+        propagator.pushSecurityContext(context, null, securityConfig, as4Operations);
 
         Subject pushedSubject = SecurityAssociation.getSubject();
         assertEquals(context.getSubject(), pushedSubject);
 
-        propagator.popSecurityContext(context, securityConfig);
+        propagator.popSecurityContext(context, securityConfig, as4Operations);
         pushedSubject = SecurityAssociation.getSubject();
         assertNull(pushedSubject);
     }
@@ -68,12 +75,12 @@
         final SecurityConfig securityConfig = getSecurityConfig();
         final SecurityContext context = getSecurityContext();
 
-        propagator.pushSecurityContext(context, null, null);
+        propagator.pushSecurityContext(context, null, null, as4Operations);
 
         Subject pushedSubject = SecurityAssociation.getSubject();
         assertEquals(context.getSubject(), pushedSubject);
 
-        propagator.popSecurityContext(context, securityConfig);
+        propagator.popSecurityContext(context, securityConfig, as4Operations);
         pushedSubject = SecurityAssociation.getSubject();
         assertNull(pushedSubject);
     }
@@ -81,9 +88,57 @@
     @Test
     public void popWithNullSecurityConfig()
     {
-        propagator.popSecurityContext(null, null);
+        propagator.popSecurityContext(null, null, as4Operations);
     }
 
+    @Test
+    public void pushAndPopAS5()
+    {
+        final SecurityConfig securityConfig = getSecurityConfig();
+        final SecurityContext context = getSecurityContext();
+
+        propagator.pushSecurityContext(context, null, securityConfig, as5Operations);
+
+        final org.jboss.security.SecurityContext securityContext = SecurityContextAssociation.getSecurityContext() ;
+        assertNotNull("securityContext", securityContext) ;
+        
+        final SubjectInfo subjectInfo = securityContext.getSubjectInfo() ;
+        assertNotNull("subjectInfo", subjectInfo) ;
+        
+        final Subject pushedSubject = subjectInfo.getAuthenticatedSubject() ;
+        assertEquals("Subject comparison", context.getSubject(), pushedSubject);
+
+        propagator.popSecurityContext(context, securityConfig, as5Operations);
+        assertNull("securityContext", SecurityContextAssociation.getSecurityContext());
+    }
+
+    @Test
+    public void pushAndPopWithNullSecurityConfigAS5()
+    {
+        final SecurityConfig securityConfig = getSecurityConfig();
+        final SecurityContext context = getSecurityContext();
+
+        propagator.pushSecurityContext(context, null, null, as5Operations);
+
+        final org.jboss.security.SecurityContext securityContext = SecurityContextAssociation.getSecurityContext() ;
+        assertNotNull("securityContext", securityContext) ;
+        
+        final SubjectInfo subjectInfo = securityContext.getSubjectInfo() ;
+        assertNotNull("subjectInfo", subjectInfo) ;
+        
+        final Subject pushedSubject = subjectInfo.getAuthenticatedSubject() ;
+        assertEquals("Subject comparison", context.getSubject(), pushedSubject);
+
+        propagator.popSecurityContext(context, securityConfig, as5Operations);
+        assertNull("securityContext", SecurityContextAssociation.getSecurityContext());
+    }
+
+    @Test
+    public void popWithNullSecurityConfigAS5()
+    {
+        propagator.popSecurityContext(null, null, as5Operations);
+    }
+
     public static junit.framework.Test suite()
     {
         return new JUnit4TestAdapter(JBossASContextPropagatorUnitTest.class);

Modified: labs/jbossesb/branches/JBESB_4_7_CP/product/services/base-project-build.xml
===================================================================
--- labs/jbossesb/branches/JBESB_4_7_CP/product/services/base-project-build.xml	2010-06-15 07:43:33 UTC (rev 33504)
+++ labs/jbossesb/branches/JBESB_4_7_CP/product/services/base-project-build.xml	2010-06-15 11:40:10 UTC (rev 33505)
@@ -37,7 +37,7 @@
 		<pathelement location="build/${ant.project.name}.esb" />
 		<pathelement location="build/classes" />
 		<pathelement location="build/test/classes" />
-        <fileset dir="${esb.main.lib}" includes="jboss-system-4.2.2.GA.jar" />
+        <fileset dir="${esb.main.lib}" includes="jboss-system-*.jar" />
 		<fileset dir="lib/ext" includes="*.jar" />
 		<fileset dir="lib/ext/build-time" includes="*.jar" />
         <fileset dir="${esb.product.lib.ext}/endorsed" includes="jboss-saaj.jar" />



More information about the jboss-svn-commits mailing list