Index: modules/testsuite/cxf-tests/scripts/cxf-samples-jaxws.xml
===================================================================
--- modules/testsuite/cxf-tests/scripts/cxf-samples-jaxws.xml (revision 11981)
+++ modules/testsuite/cxf-tests/scripts/cxf-samples-jaxws.xml (working copy)
@@ -184,6 +184,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
emptyMap());
+ }
+
+ public SubjectCreatingInterceptor(Map properties)
+ {
+ super(properties);
+ SPIProvider spiProvider = SPIProviderResolver.getInstance().getProvider();
+ secAdaptorFactory = spiProvider.getSPI(SecurityAdaptorFactory.class);
+ }
+
+ @Override
+ public Subject createSubject(String name, String password, boolean isDigest,
+ String nonce, String created)
+ {
+ // Load AuthenticationManager
+ // TODO : use PicketBox API
+
+ AuthenticationManagerLoader aml = null;
+ try
+ {
+ aml = AuthenticationManagerLoader.class.newInstance();
+ }
+ catch (Exception ex)
+ {
+ String msg = "AuthenticationManager can nont be loaded";
+ log.error(msg);
+ throw new SecurityException(msg);
+ }
+
+ AuthenticationManager am = aml.getManager();
+
+ // verify timestamp and nonce if digest
+ if (isDigest)
+ {
+ verifyUsernameToken(nonce, created);
+ // CallbackHandler cb = new UsernameTokenCallbackHandler(nonce, created);
+ // CallbackHandlerPolicyContextHandler.setCaallbackHandler(cb);
+ }
+
+ // authenticate and populate Subject
+
+ Principal principal = new SimplePrincipal(name);
+ Subject subject = new Subject();
+
+ boolean TRACE = log.isTraceEnabled();
+ if (TRACE)
+ log.trace("About to authenticate, using security domain '" + am.getSecurityDomain() + "'");
+
+ if (am.isValid(principal, password, subject) == false)
+ {
+ String msg = "Authentication failed, principal=" + principal.getName();
+ log.error(msg);
+ throw new SecurityException(msg);
+ }
+
+ // push subject on the thread local storage
+ SecurityAdaptor adaptor = secAdaptorFactory.newSecurityAdapter();
+ adaptor.setPrincipal(principal);
+ adaptor.setCredential(password);
+ adaptor.pushSubjectContext(subject, principal, password);
+
+ if (TRACE)
+ log.trace("Authenticated, principal=" + name);
+
+ return subject;
+ }
+
+
+ private void verifyUsernameToken(String nonce, String created)
+ {
+ if (created != null)
+ {
+ Calendar cal = SimpleTypeBindings.unmarshalDateTime(created);
+ Calendar ref = Calendar.getInstance();
+ ref.add(Calendar.SECOND, -TIMESTAMP_FRESHNESS_THRESHOLD);
+ if (ref.after(cal))
+ throw new SecurityException("Request rejected since a stale timestamp has been provided: " + created);
+ }
+
+ // if (nonce != null)
+ // {
+ // if (nonceStore.hasNonce(nonce))
+ throw new SecurityException("Request rejected since a message with the same nonce has been recently received; nonce = " + nonce);
+ // }
+ }
+}
+
Property changes on: modules\testsuite\cxf-tests\src\test\java\org\jboss\test\ws\jaxws\samples\wsse\SubjectCreatingInterceptor.java
___________________________________________________________________
Added: svn:keywords
+ Rev Date
Added: svn:eol-style
+ native
Index: modules/testsuite/cxf-tests/src/test/java/org/jboss/test/ws/jaxws/samples/wsse/UsernameAuthorizationTestCase.java
===================================================================
--- modules/testsuite/cxf-tests/src/test/java/org/jboss/test/ws/jaxws/samples/wsse/UsernameAuthorizationTestCase.java (revision 0)
+++ modules/testsuite/cxf-tests/src/test/java/org/jboss/test/ws/jaxws/samples/wsse/UsernameAuthorizationTestCase.java (revision 0)
@@ -0,0 +1,96 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.samples.wsse;
+
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.Service;
+
+import junit.framework.Test;
+
+import org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor;
+import org.apache.cxf.endpoint.Client;
+import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.frontend.ClientProxy;
+import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor;
+import org.jboss.wsf.test.JBossWSTest;
+import org.jboss.wsf.test.JBossWSTestSetup;
+
+/**
+ * WS-Security username authorization test case
+ *
+ */
+public final class UsernameAuthorizationTestCase extends JBossWSTest
+{
+ private final String serviceURL = "http://" + getServerHost() + ":8080/jaxws-samples-wsse-username-authorize";
+
+ public static Test suite()
+ {
+ return new JBossWSTestSetup(UsernameAuthorizationTestCase.class,"jaxws-samples-wsse-username-authorize.war");
+ }
+
+ public void testAuthorized() throws Exception
+ {
+ QName serviceName = new QName("http://www.jboss.org/jbossws/ws-extensions/wssecurity", "SecurityService");
+ URL wsdlURL = new URL(serviceURL + "?wsdl");
+ Service service = Service.create(wsdlURL, serviceName);
+ ServiceIface proxy = (ServiceIface)service.getPort(ServiceIface.class);
+ setupWsse(proxy, "kermit");
+ assertEquals("Secure Hello World!", proxy.sayHello());
+ }
+
+ public void testUnauthorized() throws Exception
+ {
+ QName serviceName = new QName("http://www.jboss.org/jbossws/ws-extensions/wssecurity", "SecurityService");
+ URL wsdlURL = new URL(serviceURL + "?wsdl");
+ Service service = Service.create(wsdlURL, serviceName);
+ ServiceIface proxy = (ServiceIface)service.getPort(ServiceIface.class);
+ setupWsse(proxy, "kermit");
+ try
+ {
+ proxy.greetMe();
+ fail("User kermit should not be authorized to invoke greetMe.");
+ }
+ catch (Exception ex)
+ {
+ assertEquals("Unauthorized", ex.getMessage());
+ }
+ }
+
+ private void setupWsse(ServiceIface proxy, String username)
+ {
+ Client client = ClientProxy.getClient(proxy);
+ Endpoint cxfEndpoint = client.getEndpoint();
+
+ Map outProps = new HashMap();
+ outProps.put("action", "UsernameToken");
+ outProps.put("user", username);
+ outProps.put("passwordType", "PasswordText");
+ outProps.put("passwordCallbackClass", "org.jboss.test.ws.jaxws.samples.wsse.UsernamePasswordCallback");
+ WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps); //request
+ cxfEndpoint.getOutInterceptors().add(wssOut);
+ cxfEndpoint.getOutInterceptors().add(new SAAJOutInterceptor());
+ }
+}
Property changes on: modules\testsuite\cxf-tests\src\test\java\org\jboss\test\ws\jaxws\samples\wsse\UsernameAuthorizationTestCase.java
___________________________________________________________________
Added: svn:keywords
+ Rev Date
Added: svn:eol-style
+ native
Index: modules/testsuite/cxf-tests/src/test/resources/jaxws/samples/wsse/username-authorize/WEB-INF/jboss-web.xml
===================================================================
--- modules/testsuite/cxf-tests/src/test/resources/jaxws/samples/wsse/username-authorize/WEB-INF/jboss-web.xml (revision 0)
+++ modules/testsuite/cxf-tests/src/test/resources/jaxws/samples/wsse/username-authorize/WEB-INF/jboss-web.xml (revision 0)
@@ -0,0 +1,7 @@
+
+
+
+
+
+ java:/jaas/JBossWS
+
Property changes on: modules\testsuite\cxf-tests\src\test\resources\jaxws\samples\wsse\username-authorize\WEB-INF\jboss-web.xml
___________________________________________________________________
Added: svn:mime-type
+ text/xml
Added: svn:keywords
+ Rev Date
Added: svn:eol-style
+ native
Index: modules/testsuite/cxf-tests/src/test/resources/jaxws/samples/wsse/username-authorize/WEB-INF/jbossws-cxf.xml
===================================================================
--- modules/testsuite/cxf-tests/src/test/resources/jaxws/samples/wsse/username-authorize/WEB-INF/jbossws-cxf.xml (revision 0)
+++ modules/testsuite/cxf-tests/src/test/resources/jaxws/samples/wsse/username-authorize/WEB-INF/jbossws-cxf.xml (revision 0)
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Property changes on: modules\testsuite\cxf-tests\src\test\resources\jaxws\samples\wsse\username-authorize\WEB-INF\jbossws-cxf.xml
___________________________________________________________________
Added: svn:mime-type
+ text/xml
Added: svn:keywords
+ Rev Date
Added: svn:eol-style
+ native
Index: modules/testsuite/cxf-tests/src/test/resources/jaxws/samples/wsse/username-authorize/WEB-INF/web.xml
===================================================================
--- modules/testsuite/cxf-tests/src/test/resources/jaxws/samples/wsse/username-authorize/WEB-INF/web.xml (revision 0)
+++ modules/testsuite/cxf-tests/src/test/resources/jaxws/samples/wsse/username-authorize/WEB-INF/web.xml (revision 0)
@@ -0,0 +1,15 @@
+
+
+
+
+ TestService
+ org.jboss.test.ws.jaxws.samples.wsse.ServiceImpl
+
+
+ TestService
+ /*
+
+
Property changes on: modules\testsuite\cxf-tests\src\test\resources\jaxws\samples\wsse\username-authorize\WEB-INF\web.xml
___________________________________________________________________
Added: svn:mime-type
+ text/xml
Added: svn:keywords
+ Rev Date
Added: svn:eol-style
+ native
Index: modules/testsuite/cxf-tests/src/test/resources/jaxws/samples/wsse/username-authorize/WEB-INF/wsdl/SecurityService.wsdl
===================================================================
--- modules/testsuite/cxf-tests/src/test/resources/jaxws/samples/wsse/username-authorize/WEB-INF/wsdl/SecurityService.wsdl (revision 0)
+++ modules/testsuite/cxf-tests/src/test/resources/jaxws/samples/wsse/username-authorize/WEB-INF/wsdl/SecurityService.wsdl (revision 0)
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Property changes on: modules\testsuite\cxf-tests\src\test\resources\jaxws\samples\wsse\username-authorize\WEB-INF\wsdl\SecurityService.wsdl
___________________________________________________________________
Added: svn:mime-type
+ text/xml
Added: svn:keywords
+ Rev Date
Added: svn:eol-style
+ native
Index: modules/testsuite/cxf-tests/src/test/resources/jaxws/samples/wsse/username-authorize/WEB-INF/wsdl/SecurityService_schema1.xsd
===================================================================
--- modules/testsuite/cxf-tests/src/test/resources/jaxws/samples/wsse/username-authorize/WEB-INF/wsdl/SecurityService_schema1.xsd (revision 0)
+++ modules/testsuite/cxf-tests/src/test/resources/jaxws/samples/wsse/username-authorize/WEB-INF/wsdl/SecurityService_schema1.xsd (revision 0)
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Property changes on: modules\testsuite\cxf-tests\src\test\resources\jaxws\samples\wsse\username-authorize\WEB-INF\wsdl\SecurityService_schema1.xsd
___________________________________________________________________
Added: svn:mime-type
+ text/xml
Added: svn:keywords
+ Rev Date
Added: svn:eol-style
+ native
Index: pom.xml
===================================================================
--- pom.xml (revision 11981)
+++ pom.xml (working copy)
@@ -55,7 +55,7 @@
3.2.1.GA
-->
- 2.2.6
+ 2.2.8-SNAPSHOT
1.0.1
2.2.3
1.2.7