Could you create a zip file instead that I can just extract and run please?

Colm.


On Tue, Jun 24, 2014 at 1:49 PM, Stephanie Dammann <
[email protected]> wrote:

> Hello again,
>
> thanks for your answer.
> Here is a sample project.
>
> I think some configurations might be wrong, but I can't find out what
> needs to be changed, in order to run this project properly.
> I just started with web service development and I thought the
> UsernameToken + password-example should be easy.
> It would be nice if you could help me.
>
> Thanks in advance.
>
> Regards
> Stephanie
>
> Here is the sample code:
>
> The service
> package net.eads.astrium;
>
> import javax.jws.WebMethod;
> import javax.jws.WebParam;
> import javax.jws.WebService;
> import javax.xml.bind.annotation.XmlSeeAlso;
> import javax.xml.namespace.QName;
> import javax.xml.ws.RequestWrapper;
> import javax.xml.ws.ResponseWrapper;
>
> import org.apache.cxf.annotations.EndpointProperties;
> import org.apache.cxf.annotations.EndpointProperty;
>
> import javax.jws.soap.SOAPBinding;
> import javax.jws.soap.SOAPBinding.*;
>
> @WebService
> @SOAPBinding(style=Style.DOCUMENT, use=Use.ENCODED)
> @EndpointProperties(
>            {
>               @EndpointProperty(key = "action", value="UsernameToken"),
>               @EndpointProperty(key = "passwordType",
> value="PasswordText"),
>            })
> @XmlSeeAlso({net.eads.astrium.types.ObjectFactory.class})
> public interface CurrentTimeReadable {
>        public final static QName TimerPort = new QName("
> http://localhost:8181/cxf/CurrentTimeReadableService";, "TimerPort");
>     @RequestWrapper(localName = "GetCurrentTimeReadable", className =
> "net.eads.astrium.types.GetCurrentTimeReadable")
>     @ResponseWrapper(localName = "GetCurrentTimeReadableResponse",
> className = "net.eads.astrium.types.GetCurrentTimeReadableResponse")
>     @WebMethod(operationName = "GetCurrentTimeReadable")
>     public void getCurrentTime(
>         @WebParam(mode = WebParam.Mode.OUT, name = "time")
>         javax.xml.ws.Holder<java.lang.String> ssn
>     );
> }
>
>
> The serviceImpl
>
> package net.eads.astrium;
>
> import java.text.DateFormat;
> import java.util.Date;
> import javax.jws.WebService;
> import javax.xml.ws.Holder;
>
> @WebService(serviceName = "CurrentTimeReadableService", endpointInterface
> = "net.eads.astrium.CurrentTimeReadable")
> public class CurrentTimeReadableImpl implements CurrentTimeReadable {
>
>     public void getCurrentTime(Holder<String> time)
>     {
>         time.value = DateFormat.getDateTimeInstance().format(new Date());
>     }
>
> }
>
> The server
>
> package net.eads.astrium;
>
> import java.net.URL;
> import java.util.HashMap;
> import java.util.Map;
>
> import javax.xml.ws.Endpoint;
>
> import org.apache.cxf.Bus;
> import org.apache.cxf.BusFactory;
> import org.apache.cxf.bus.spring.SpringBusFactory;
> import org.apache.cxf.jaxws.EndpointImpl;
> import org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor;
> import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor;
>
> public class Server {
>        protected Server() throws Exception {
>         System.out.println("Starting Server");
>
>         Object implementor = new CurrentTimeReadableImpl();
>         String address = "
> http://localhost:8181/cxf/CurrentTimeReadableService";;
>         EndpointImpl impl = (EndpointImpl)Endpoint.publish(address,
> implementor);
>
>         Map<String, Object> outProps = new HashMap<String, Object>();
>         outProps.put("action", "UsernameToken Timestamp");
>
>         outProps.put("passwordType", "PasswordText");
>         outProps.put("user", "Alice");
>         outProps.put("passwordCallbackClass",
> "net.eads.astrium.UTPasswordCallback");
>
>         impl.getOutInterceptors().add(new WSS4JOutInterceptor(outProps));
>
>         Map<String, Object> inProps = new HashMap<String, Object>();
>         inProps.put("action", "UsernameToken Timestamp");
>         inProps.put("passwordType", "PasswordDigest");
>         inProps.put("passwordCallbackClass",
> "net.eads.astrium.UTPasswordCallback");
>
>         impl.getInInterceptors().add(new WSS4JInInterceptor(inProps));
>     }
>
>        public static void main(String args[]) throws Exception {
>
>         SpringBusFactory bf = new SpringBusFactory();
>         URL busFile = Server.class.getResource("/wssec.xml");
>        System.out.println("URL: " + busFile);
>         Bus bus = bf.createBus(busFile.toString());
>
>         BusFactory.setDefaultBus(bus);
>
>         new Server();
>         System.out.println("Server ready...");
>
>         Thread.sleep(5 * 60 * 1000);
>
>         bus.shutdown(true);
>         System.out.println("Server exiting");
>         System.exit(0);
>     }
> }
>
>
> The PasswordCallback (same for Client and server)
>
> package net.eads.astrium;
>
> import java.io.IOException;
> import java.util.HashMap;
> import java.util.Map;
>
> import javax.security.auth.callback.Callback;
> import javax.security.auth.callback.CallbackHandler;
> import javax.security.auth.callback.UnsupportedCallbackException;
>
> import org.apache.wss4j.common.ext.WSPasswordCallback;
>
> /**
> */
>
> public class UTPasswordCallback implements CallbackHandler {
>
>     private Map<String, String> passwords =
>         new HashMap<String, String>();
>
>     public UTPasswordCallback() {
>         passwords.put("Alice", "ecilA");
>         passwords.put("abcd", "dcba");
>     }
>
>     /**
>      * Here, we attempt to get the password from the private
>      * alias/passwords map.
>      */
>     public void handle(Callback[] callbacks) throws IOException,
> UnsupportedCallbackException {
>         for (int i = 0; i < callbacks.length; i++) {
>             WSPasswordCallback pc = (WSPasswordCallback)callbacks[i];
>
>             String pass = passwords.get(pc.getIdentifier());
>             if (pass != null) {
>                 pc.setPassword(pass);
>                 return;
>             }
>         }
>     }
>
>     /**
>      * Add an alias/password pair to the callback mechanism.
>      */
>     public void setAliasPassword(String alias, String password) {
>         passwords.put(alias, password);
>     }
> }
>
>
> The client
>
> package net.eads.astrium.client;
>
> import java.net.URL;
> import java.util.HashMap;
> import java.util.Map;
>
> import net.eads.astrium.CurrentTimeReadable;
>
> import org.apache.cxf.Bus;
> import org.apache.cxf.BusFactory;
> import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
> import org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor;
> import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor;
> import org.apache.cxf.bus.spring.SpringBusFactory;
> import org.apache.cxf.frontend.ClientProxy;
>
> public class Client {
>        public static void main(String args[]) throws Exception {
>         JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
>         factory.setServiceClass(CurrentTimeReadable.class);
>         if (args != null && args.length > 0 && !"".equals(args[0])) {
>             factory.setAddress(args[0]);
>         } else {
>              factory.setAddress("
> http://localhost:8181/cxf/CurrentTimeReadableService";);
>         }
>
>         Map<String, Object> outProps = new HashMap<String, Object>();
>         outProps.put("action", "UsernameToken Timestamp");
>
>         outProps.put("passwordType", "PasswordDigest");
>         outProps.put("user", "abcd");
>         outProps.put("passwordCallbackClass",
> "net.eads.astrium.client.UTPasswordCallback");
>
>         Map<String, Object> inProps = new HashMap<String, Object>();
>         inProps.put("action", "UsernameToken Timestamp");
>         inProps.put("passwordType", "PasswordText");
>         inProps.put("passwordCallbackClass",
> "net.eads.astrium.client.UTPasswordCallback");
>         CurrentTimeReadable client = (CurrentTimeReadable)
> factory.create();
>         ClientProxy.getClient(client).getInInterceptors().add(new
> WSS4JInInterceptor(inProps));
>         ClientProxy.getClient(client).getOutInterceptors().add(new
> WSS4JOutInterceptor(outProps));
>         System.out.println("Invoking getCurrentTime...");
>         javax.xml.ws.Holder<java.lang.String> _getCurrentTime_time = new
> javax.xml.ws.Holder<java.lang.String>();
>         client.getCurrentTime(_getCurrentTime_time);
>
>         System.out.println("the current time from
> "+factory.getAddress()+"=" + _getCurrentTime_time.value);
>     }
> }
>
> META_Inf/sping/beans.xml
>
> <?xml version="1.0" encoding="UTF-8"?>
> <!-- Generated by Apache ServiceMix Archetype -->
> <beans xmlns="http://www.springframework.org/schema/beans";
>        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:jaxws="
> http://cxf.apache.org/jaxws";
>        xsi:schemaLocation="
>         http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans.xsd
>         http://cxf.apache.org/jaxws
> http://cxf.apache.org/schemas/jaxws.xsd
>         http://www.springframework.org/schema/osgi
> http://www.springframework.org/schema/osgi/spring-osgi.xsd";>
>        <!--  <bean id="UsernameCallback"
> class="net.eads.astrium.test.ClientPasswordCallback"/> -->
>        <jaxws:endpoint id="HTTPEndpoint"
>              implementor="net.eads.astrium.CurrentTimeReadableImpl"
> address="/CurrentTimeReadableService">
>        </jaxws:endpoint>
>
> </beans>
>
> Pom.xml
>
> <?xml version="1.0" encoding="UTF-8"?>
> <project xmlns="http://maven.apache.org/POM/4.0.0"; xmlns:xsi="
> http://www.w3.org/2001/XMLSchema-instance"; xsi:schemaLocation="
> http://maven.apache.org/POM/4.0.0
> http://maven.apache.org/xsd/maven-4.0.0.xsd";>
>
>     <!-- Generated by Apache ServiceMix Archetype -->
>
>     <modelVersion>4.0.0</modelVersion>
>
>     <groupId>net.eads.astrium</groupId>
>     <artifactId>cxf-basic-currenttimereadable</artifactId>
>     <packaging>bundle</packaging>
>     <version>1.1-SNAPSHOT</version>
>     <name>Apache ServiceMix :: CXF Current Time Readable OSGi Bundle
> #1.1</name>
>
>     <dependencies>
>         <dependency>
>             <groupId>org.apache.geronimo.specs</groupId>
>             <artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
>             <version>1.1.2</version>
>         </dependency>
>         <dependency>
>             <groupId>javax.xml.bind</groupId>
>             <artifactId>jaxb-api</artifactId>
>             <version>2.2</version>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.geronimo.specs</groupId>
>             <artifactId>geronimo-jaxws_2.2_spec</artifactId>
>             <version>1.0</version>
>         </dependency>
>
>         <!-- Needed for Client -->
>         <dependency>
>             <groupId>org.apache.cxf</groupId>
>             <artifactId>cxf-rt-frontend-jaxws</artifactId>
>             <version>2.6.0</version>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.cxf</groupId>
>             <artifactId>cxf-rt-transports-http</artifactId>
>             <version>2.6.0</version>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.cxf</groupId>
>             <artifactId>cxf-rt-ws-security</artifactId>
>             <version>3.0.0</version>
>         </dependency>
>     </dependencies>
>
>     <build>
>         <defaultGoal>install</defaultGoal>
>         <plugins>
>             <plugin>
>                 <groupId>org.apache.maven.plugins</groupId>
>                 <artifactId>maven-compiler-plugin</artifactId>
>                 <version>2.0.2</version>
>                 <configuration>
>                     <source>1.5</source>
>                     <target>1.5</target>
>                     <encoding>UTF-8</encoding>
>                 </configuration>
>             </plugin>
>             <plugin>
>                 <groupId>org.apache.maven.plugins</groupId>
>                 <artifactId>maven-resources-plugin</artifactId>
>                 <version>2.4.3</version>
>                 <configuration>
>                     <encoding>UTF-8</encoding>
>                 </configuration>
>             </plugin>
>              <plugin>
>                 <groupId>org.apache.felix</groupId>
>                 <artifactId>maven-bundle-plugin</artifactId>
>                 <version>2.3.6</version>
>                 <extensions>true</extensions>
>                 <configuration>
>                     <instructions>
>
> <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
>                         <Import-Package>
>                             javax.jws,
>                             javax.wsdl,
>                             javax.xml.bind,
>                             javax.xml.bind.annotation,
>                             javax.xml.namespace,
>                             javax.xml.ws,
>                             META-INF.cxf,
>                             META-INF.cxf.osgi,
>                             org.apache.cxf.bus,
>                             org.apache.cxf.bus.spring,
>                             org.apache.cxf.bus.resource,
>                             org.apache.cxf.configuration.spring,
>                             org.apache.cxf.resource,
>                             org.apache.cxf.jaxws,
>                             org.apache.cxf.transport.http,
>                             org.springframework.beans.factory.config
>                         </Import-Package>
>                         <Private-Package>
>                             !net.eads.astrium.client,
>                             net.eads.astrium,
>                             net.eads.astrium.types
>                         </Private-Package>
>
> <Require-Bundle>org.apache.cxf.bundle</Require-Bundle>
>
>
> <DynamicImport-Package>*</DynamicImport-Package>
>
>                     </instructions>
>                 </configuration>
>             </plugin>
>         </plugins>
>     </build>
>
>     <profiles>
>         <profile>
>             <id>client</id>
>             <build>
>                 <defaultGoal>test</defaultGoal>
>                 <plugins>
>                     <plugin>
>                         <groupId>org.codehaus.mojo</groupId>
>                         <artifactId>exec-maven-plugin</artifactId>
>                         <executions>
>                             <execution>
>                                 <phase>test</phase>
>                                 <goals>
>                                     <goal>java</goal>
>                                 </goals>
>                                 <configuration>
>
> <mainClass>net.eads.astrium.client.CurrentTimeClient</mainClass>
>                                 </configuration>
>                             </execution>
>                         </executions>
>                     </plugin>
>                 </plugins>
>             </build>
>         </profile>
>     </profiles>
>
> </project>
>
>
>
>
> Von: Stephanie Dammann
> Gesendet: Montag, 23. Juni 2014 16:03
> An: '[email protected]'
> Betreff: WS-Security
>
> Hello there,
>
> I am trying to build an Java-First Web Service with WS-Security
> (UsernameToken + Password).
> I have found the CXF sample ws_security/ut and I wanted to use this
> example to extend my own Web Service.
> I have build the Client with the WSS4Jin- and OutInterceptor and so on,
> but it isn't working.
> I have got this exception Exception in thread "main"
> javax.xml.ws.soap.SOAPFaultException: MustUnderstand headers: [{
> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}Security]
> are not understood.
> I can't find out what I need to do. I have included the
> cxf-rt-ws-security-dependency in the pom.xml and I have imported the
> library.
> Could you please help me?
>
> Thanks in advance.
>
> Regards
> Stephanie
>
>
>


-- 
Colm O hEigeartaigh

Talend Community Coder
http://coders.talend.com

Reply via email to