[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