You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2007/02/07 23:32:21 UTC
svn commit: r504722 - in /incubator/cxf/trunk:
api/src/main/java/org/apache/cxf/message/
rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/
rt/transports/http/src/main/java/org/apache/cxf/transport/http/
rt/transports/http/src/test/java/org/...
Author: dkulp
Date: Wed Feb 7 14:32:20 2007
New Revision: 504722
URL: http://svn.apache.org/viewvc?view=rev&rev=504722
Log:
Fix basic-auth
* Remove Message.USERNAME and Message.PASSWORD properties. Authentication should be through the AuthenticationPolicy object.
* Change JAX-WS frontend context mapping to map the JAX-WS properties to an AuthenticationPolicy
* Map server side AuthenticationPolicy to JAX-WS mapping
Modified:
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/message/Message.java
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/ContextPropertiesMapping.java
incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java
incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java
incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java
incubator/cxf/trunk/rt/transports/http2/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerTest.java
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/SequenceTest.java
incubator/cxf/trunk/testutils/src/main/java/org/apache/hello_world_soap_http/GreeterImpl.java
Modified: incubator/cxf/trunk/api/src/main/java/org/apache/cxf/message/Message.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/message/Message.java?view=diff&rev=504722&r1=504721&r2=504722
==============================================================================
--- incubator/cxf/trunk/api/src/main/java/org/apache/cxf/message/Message.java (original)
+++ incubator/cxf/trunk/api/src/main/java/org/apache/cxf/message/Message.java Wed Feb 7 14:32:20 2007
@@ -43,8 +43,6 @@
String DECOUPLED_CHANNEL_MESSAGE = "decoupled.channel.message";
String PARTIAL_RESPONSE_MESSAGE = "org.apache.cxf.partial.response";
- String USERNAME = Message.class.getName() + ".USERNAME";
- String PASSWORD = Message.class.getName() + ".PASSWORD";
String PROTOCOL_HEADERS = Message.class.getName() + ".PROTOCOL_HEADERS";
String RESPONSE_CODE = Message.class.getName() + ".RESPONSE_CODE";
String ENDPOINT_ADDRESS = Message.class.getName() + ".ENDPOINT_ADDRESS";
Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/ContextPropertiesMapping.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/ContextPropertiesMapping.java?view=diff&rev=504722&r1=504721&r2=504722
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/ContextPropertiesMapping.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/ContextPropertiesMapping.java Wed Feb 7 14:32:20 2007
@@ -30,6 +30,7 @@
import javax.xml.ws.BindingProvider;
import javax.xml.ws.handler.MessageContext;
+import org.apache.cxf.configuration.security.AuthorizationPolicy;
import org.apache.cxf.jaxws.context.WrappedMessageContext;
import org.apache.cxf.message.Attachment;
import org.apache.cxf.message.Exchange;
@@ -47,10 +48,6 @@
static {
cxf2jaxwsMap.put(Message.ENDPOINT_ADDRESS,
BindingProvider.ENDPOINT_ADDRESS_PROPERTY);
- cxf2jaxwsMap.put(Message.USERNAME,
- BindingProvider.USERNAME_PROPERTY);
- cxf2jaxwsMap.put(Message.PASSWORD,
- BindingProvider.PASSWORD_PROPERTY);
cxf2jaxwsMap.put(Message.HTTP_REQUEST_METHOD,
MessageContext.HTTP_REQUEST_METHOD);
@@ -63,10 +60,6 @@
jaxws2cxfMap.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
Message.ENDPOINT_ADDRESS);
- jaxws2cxfMap.put(BindingProvider.USERNAME_PROPERTY,
- Message.USERNAME);
- jaxws2cxfMap.put(BindingProvider.PASSWORD_PROPERTY,
- Message.PASSWORD);
jaxws2cxfMap.put(MessageContext.HTTP_REQUEST_METHOD,
Message.HTTP_REQUEST_METHOD);
@@ -119,10 +112,23 @@
private static void mapJaxws2Cxf(Map<String, Object> context) {
mapContext(context, jaxws2cxfMap);
+ if (context.containsKey(BindingProvider.USERNAME_PROPERTY)) {
+ AuthorizationPolicy authPolicy = new AuthorizationPolicy();
+ authPolicy.setUserName((String)context.get(BindingProvider.USERNAME_PROPERTY));
+ authPolicy.setPassword((String)context.get(BindingProvider.PASSWORD_PROPERTY));
+ context.put(AuthorizationPolicy.class.getName(), authPolicy);
+ }
}
private static void mapCxf2Jaxws(Map<String, Object> context) {
mapContext(context, cxf2jaxwsMap);
+
+ if (context.containsKey(AuthorizationPolicy.class.getName())) {
+ AuthorizationPolicy authPolicy =
+ (AuthorizationPolicy)context.get(AuthorizationPolicy.class.getName());
+ context.put(BindingProvider.USERNAME_PROPERTY, authPolicy.getUserName());
+ context.put(BindingProvider.PASSWORD_PROPERTY, authPolicy.getPassword());
+ }
}
Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java?view=diff&rev=504722&r1=504721&r2=504722
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java Wed Feb 7 14:32:20 2007
@@ -445,9 +445,9 @@
private void setPolicies(Message message, Map<String, List<String>> headers) {
AuthorizationPolicy authPolicy = getAuthorization();
AuthorizationPolicy newPolicy = message.get(AuthorizationPolicy.class);
- String userName = (String)message.get(Message.USERNAME);
- String passwd = (String)message.get(Message.PASSWORD);
- if (null != newPolicy && null != userName) {
+ String userName = null;
+ String passwd = null;
+ if (null != newPolicy) {
userName = newPolicy.getUserName();
passwd = newPolicy.getPassword();
}
Modified: incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java?view=diff&rev=504722&r1=504721&r2=504722
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java Wed Feb 7 14:32:20 2007
@@ -36,6 +36,7 @@
import junit.framework.TestCase;
import org.apache.cxf.bus.CXFBusImpl;
+import org.apache.cxf.configuration.security.AuthorizationPolicy;
import org.apache.cxf.helpers.CastUtils;
import org.apache.cxf.message.Message;
import org.apache.cxf.message.MessageImpl;
@@ -139,8 +140,11 @@
contentTypes.add("charset=utf8");
headers.put("content-type", contentTypes);
message.put(Message.PROTOCOL_HEADERS, headers);
- message.put(Message.USERNAME, "BJ");
- message.put(Message.PASSWORD, "value");
+
+ AuthorizationPolicy authPolicy = new AuthorizationPolicy();
+ authPolicy.setUserName("BJ");
+ authPolicy.setPassword("value");
+ message.put(AuthorizationPolicy.class, authPolicy);
}
private HTTPConduit setUpConduit(boolean send) throws Exception {
Modified: incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java?view=diff&rev=504722&r1=504721&r2=504722
==============================================================================
--- incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java (original)
+++ incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java Wed Feb 7 14:32:20 2007
@@ -445,9 +445,9 @@
private void setPolicies(Message message, Map<String, List<String>> headers) {
AuthorizationPolicy authPolicy = config.getAuthorization();
AuthorizationPolicy newPolicy = message.get(AuthorizationPolicy.class);
- String userName = (String)message.get(Message.USERNAME);
- String passwd = (String)message.get(Message.PASSWORD);
- if (null != newPolicy && null != userName) {
+ String userName = null;
+ String passwd = null;
+ if (null != newPolicy) {
userName = newPolicy.getUserName();
passwd = newPolicy.getPassword();
}
Modified: incubator/cxf/trunk/rt/transports/http2/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http2/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java?view=diff&rev=504722&r1=504721&r2=504722
==============================================================================
--- incubator/cxf/trunk/rt/transports/http2/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java (original)
+++ incubator/cxf/trunk/rt/transports/http2/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java Wed Feb 7 14:32:20 2007
@@ -39,6 +39,7 @@
import junit.framework.TestCase;
import org.apache.cxf.bus.CXFBusImpl;
+import org.apache.cxf.configuration.security.AuthorizationPolicy;
import org.apache.cxf.helpers.CastUtils;
import org.apache.cxf.message.Message;
import org.apache.cxf.message.MessageImpl;
@@ -142,9 +143,13 @@
contentTypes.add("text/xml");
contentTypes.add("charset=utf8");
headers.put("content-type", contentTypes);
- message.put(Message.PROTOCOL_HEADERS, headers);
- message.put(Message.USERNAME, "BJ");
- message.put(Message.PASSWORD, "value");
+ message.put(Message.PROTOCOL_HEADERS, headers);
+
+
+ AuthorizationPolicy authPolicy = new AuthorizationPolicy();
+ authPolicy.setUserName("BJ");
+ authPolicy.setPassword("value");
+ message.put(AuthorizationPolicy.class, authPolicy);
}
private HTTPConduit setUpConduit(boolean send) throws Exception {
Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerTest.java?view=diff&rev=504722&r1=504721&r2=504722
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerTest.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerTest.java Wed Feb 7 14:32:20 2007
@@ -81,7 +81,7 @@
TestSuite suite = new TestSuite(ClientServerTest.class);
return new ClientServerSetupBase(suite) {
public void startServers() throws Exception {
- assertTrue("server did not launch correctly", launchServer(Server.class));
+ assertTrue("server did not launch correctly", launchServer(Server.class, true));
}
public void setUp() throws Exception {
// set up configuration to enable schema validation
@@ -93,7 +93,6 @@
};
}
-
public void testBasicConnection() throws Exception {
SOAPService service = new SOAPService();
@@ -631,7 +630,24 @@
body,
XPathConstants.STRING);
assertEquals("Hello cxf (was CeltixFire)", response);
- }
+ }
+
+ public void testBasicAuth() throws Exception {
+ Service service = Service.create(serviceName);
+ service.addPort(fakePortName, "http://schemas.xmlsoap.org/soap/",
+ "http://localhost:9000/SoapContext/SoapPort");
+ Greeter greeter = service.getPort(fakePortName, Greeter.class);
+
+ try {
+ BindingProvider bp = (BindingProvider)greeter;
+ bp.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "BJ");
+ bp.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "pswd");
+ String s = greeter.greetMe("secure");
+ assertEquals("Hello BJ", s);
+ } catch (UndeclaredThrowableException ex) {
+ throw (Exception)ex.getCause();
+ }
+ }
public static void main(String[] args) {
junit.textui.TestRunner.run(ClientServerTest.class);
Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/SequenceTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/SequenceTest.java?view=diff&rev=504722&r1=504721&r2=504722
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/SequenceTest.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/SequenceTest.java Wed Feb 7 14:32:20 2007
@@ -820,7 +820,6 @@
}
private void removeRMInterceptors(List<Interceptor> interceptors) {
- int n = interceptors.size();
for (Iterator<Interceptor> it = interceptors.iterator(); it.hasNext();) {
Interceptor i = it.next();
if (i instanceof RMSoapInterceptor
Modified: incubator/cxf/trunk/testutils/src/main/java/org/apache/hello_world_soap_http/GreeterImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/testutils/src/main/java/org/apache/hello_world_soap_http/GreeterImpl.java?view=diff&rev=504722&r1=504721&r2=504722
==============================================================================
--- incubator/cxf/trunk/testutils/src/main/java/org/apache/hello_world_soap_http/GreeterImpl.java (original)
+++ incubator/cxf/trunk/testutils/src/main/java/org/apache/hello_world_soap_http/GreeterImpl.java Wed Feb 7 14:32:20 2007
@@ -28,8 +28,10 @@
import javax.jws.WebService;
import javax.xml.ws.AsyncHandler;
+import javax.xml.ws.BindingProvider;
import javax.xml.ws.Response;
import javax.xml.ws.WebServiceContext;
+import javax.xml.ws.handler.MessageContext;
import org.apache.hello_world_soap_http.types.BareDocumentResponse;
import org.apache.hello_world_soap_http.types.ErrorCode;
@@ -58,6 +60,12 @@
}
public String greetMe(String me) {
+ if ("secure".equals(me)) {
+ MessageContext ctx = context.getMessageContext();
+ return "Hello " + ctx.get(BindingProvider.USERNAME_PROPERTY);
+ }
+
+
LOG.info("Invoking greetMe " + me);
invocationCount++;
return "Hello " + me;