[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