[jboss-svn-commits] JBL Code SVN: r21505 - in labs/jbossesb/workspace/dbevenius/security/product: services/soap/src/main/java/org/jboss/soa/esb/actions/soap and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Aug 13 07:16:48 EDT 2008


Author: beve
Date: 2008-08-13 07:16:47 -0400 (Wed, 13 Aug 2008)
New Revision: 21505

Modified:
   labs/jbossesb/workspace/dbevenius/security/product/samples/quickstarts/webservice_producer/jboss-esb.xml
   labs/jbossesb/workspace/dbevenius/security/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPProcessor.java
   labs/jbossesb/workspace/dbevenius/security/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/adapter/SOAPProcessorHttpServletRequest.java
Log:
Added a suggestion for using the SecurityContext with the SOAPProcessor.


Modified: labs/jbossesb/workspace/dbevenius/security/product/samples/quickstarts/webservice_producer/jboss-esb.xml
===================================================================
--- labs/jbossesb/workspace/dbevenius/security/product/samples/quickstarts/webservice_producer/jboss-esb.xml	2008-08-13 07:14:18 UTC (rev 21504)
+++ labs/jbossesb/workspace/dbevenius/security/product/samples/quickstarts/webservice_producer/jboss-esb.xml	2008-08-13 11:16:47 UTC (rev 21505)
@@ -26,6 +26,7 @@
     <services>
 
         <service category="MyServiceCategory" name="MyWSProducerService" description="WS Frontend speaks natively to the ESB">
+			<security moduleName="SuccessfulLogin" runAs="adminRole"/>
 
             <listeners>
                 <jms-listener name="JMS-Gateway" busidref="quickstartGwChannel" is-gateway="true"/>

Modified: labs/jbossesb/workspace/dbevenius/security/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPProcessor.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/security/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPProcessor.java	2008-08-13 07:14:18 UTC (rev 21504)
+++ labs/jbossesb/workspace/dbevenius/security/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPProcessor.java	2008-08-13 11:16:47 UTC (rev 21505)
@@ -28,6 +28,7 @@
 
 import javax.management.ObjectName;
 
+import org.apache.log4j.Logger;
 import org.jboss.internal.soa.esb.publish.Publish;
 import org.jboss.soa.esb.ConfigurationException;
 import org.jboss.soa.esb.actions.AbstractActionPipelineProcessor;
@@ -43,6 +44,8 @@
 import org.jboss.soa.esb.message.Properties;
 import org.jboss.soa.esb.message.ResponseHeader;
 import org.jboss.soa.esb.message.body.content.BytesBody;
+import org.jboss.soa.esb.services.security.SecurityContext;
+import org.jboss.soa.esb.services.security.SecurityService;
 import org.jboss.wsf.spi.SPIProvider;
 import org.jboss.wsf.spi.SPIProviderResolver;
 import org.jboss.wsf.spi.deployment.Endpoint;
@@ -108,6 +111,7 @@
  */
 @Publish(WebserviceContractPublisher.class)
 public class SOAPProcessor extends AbstractActionPipelineProcessor {
+	private Logger log = Logger.getLogger(SOAPProcessor.class);
 
     public static final String JBOSSWS_ENDPOINT = "jbossws-endpoint";
     public static final String REWRITE_ENDPOINT_URL = "rewrite-endpoint-url";
@@ -179,7 +183,10 @@
                 headers.remove("content-type") ;
             }
             final String path = getHeaderValue(headers, "path") ;
-            final SOAPProcessorHttpServletRequest servletRequest = new SOAPProcessorHttpServletRequest(path, soapMessage, headers) ;
+            final SecurityContext securityContext = (SecurityContext) message.getProperties().getProperty( SecurityService.CONTEXT );
+            final SOAPProcessorHttpServletRequest servletRequest = new SOAPProcessorHttpServletRequest(path, soapMessage, headers, securityContext) ;
+            log.info("UserPrincipal :" + servletRequest.getUserPrincipal());
+            log.info("IsCallerInRole :" + servletRequest.isUserInRole("adminRole"));
             final SOAPProcessorHttpServletResponse servletResponse = new SOAPProcessorHttpServletResponse() ;
             final SOAPProcessorServletContext servletContext = new SOAPProcessorServletContext() ;
             requestHandler.handleHttpRequest(endpoint, servletRequest, servletResponse, servletContext) ;

Modified: labs/jbossesb/workspace/dbevenius/security/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/adapter/SOAPProcessorHttpServletRequest.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/security/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/adapter/SOAPProcessorHttpServletRequest.java	2008-08-13 07:14:18 UTC (rev 21504)
+++ labs/jbossesb/workspace/dbevenius/security/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/adapter/SOAPProcessorHttpServletRequest.java	2008-08-13 11:16:47 UTC (rev 21505)
@@ -26,19 +26,24 @@
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
+import java.security.AccessController;
 import java.security.Principal;
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Set;
 
+import javax.security.auth.Subject;
 import javax.servlet.RequestDispatcher;
 import javax.servlet.ServletInputStream;
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
 
+import org.jboss.soa.esb.services.security.SecurityContext;
+
 /**
  * This is an adapter used when integrating with JBossWS.
  *  
@@ -51,6 +56,8 @@
     private final byte[] content ;
     
     private final String path ;
+
+	private SecurityContext securityContext;
     
     public SOAPProcessorHttpServletRequest(final String path, final byte[] content, final Map<String, List<String>> headers)
     {
@@ -58,6 +65,12 @@
         this.content = content ;
         this.headers = headers ;
     }
+    
+    public SOAPProcessorHttpServletRequest(final String path, final byte[] content, final Map<String, List<String>> headers, final SecurityContext securityContext)
+    {
+    	this(path,content,headers);
+		this.securityContext = securityContext;
+    }
 
     public String getHeader(final String name)
     {
@@ -122,14 +135,21 @@
 
     public Principal getUserPrincipal()
     {
-        // TODO link this is with security
-        return null ;
+    	Principal principal = null;
+    	if (securityContext != null)
+    	{
+    		Set<? extends Principal> principals = securityContext.getPrincipals();
+    		if ( !principals.isEmpty() )
+    		{
+    			principal = principals.iterator().next();
+    		}
+    	}
+    	return principal;
     }
 
     public boolean isUserInRole(final String name)
     {
-        // TODO link this is with security
-        return false ;
+        return securityContext.isCallerInRole(name) ;
     }
 
     /*




More information about the jboss-svn-commits mailing list