blob: 6531a295bfbad74b9c11e1b4f1979eb75520fd13 [file] [log] [blame]
== CXF WS-SECURITY OSGi HTTP WEB SERVICE
=== Introduction
Create a web service with CXF using WS-SECURITY Signature action and expose it through the OSGi HTTP Service,
the main purpose is to demonstrate how to use signaturePropRefId WSS4J configuration in OSGi container.
=== Explanation
The web service is a simple JAX-WS web service with ws-security Signature and UsernameToken action called HelloWorldSecurity.
The interface and the implementation are located in the `src/main/java/org/apache/camel/example/cxf/ws` directory of this example.
The camel-context.xml file, located in the `src/main/resources/META-INF/spring` directory:
[arabic]
Configures the web service endpoint as follows:
....
<jaxws:endpoint id="helloWorld"
implementor="org.apache.camel.example.cxf.ws.HelloWorldImpl"
address="/HelloWorldSecurity">
<jaxws:inInterceptors>
<bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
<constructor-arg>
<map>
<entry key="action" value="UsernameToken Signature"/>
<entry key="passwordType" value="PasswordText"/>
<entry key="passwordCallbackRef">
<ref bean="myPasswordCallback"/>
</entry>
<entry key="signaturePropRefId" value="wsCryptoProperties"/>
<entry key="wsCryptoProperties" value-ref="wsCryptoProperties"/>
</map>
</constructor-arg>
</bean>
<bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" />
</jaxws:inInterceptors>
</jaxws:endpoint>
<util:properties id="wsCryptoProperties">
<prop key="org.apache.ws.security.crypto.provider">org.apache.ws.security.components.crypto.Merlin</prop>
<prop key="org.apache.ws.security.crypto.merlin.keystore.type">jks</prop>
<prop key="org.apache.ws.security.crypto.merlin.keystore.password">storepassword</prop>
<prop key="org.apache.ws.security.crypto.merlin.keystore.file">server-truststore.jks</prop>
</util:properties>
....
=== Build
You will need to compile this example first:
....
mvn install
....
=== Run
To run the example on Apache Karaf 4.x or newer
==== Step 1: Karaf
Launch the server
....
karaf / karaf.bat
....
==== Step 2: Add features
Add features required
....
feature:install cxf
feature:install camel
feature:install camel-cxf
....
==== Step 3: Deploy
Deploy the example
....
install -s mvn:org.apache.camel.example/camel-example-cxf-ws-security-signature/${version}
....
To view the service WSDL, open your browser and go to the following URL:
http://localhost:8181/cxf/HelloWorldSecurity?wsdl
=== Running a Client
To run the java code client:
[arabic]
. Change to the /examples/camel-example-cxf-ws-security-signature
directory.
. Run the following command:
+
`+mvn compile exec:java+`
+
If the client request is successful, it will print out: Hello CXF
=== Help and contributions
If you hit any problem using Camel or have some feedback, then please
https://camel.apache.org/support.html[let us know].
We also love contributors, so
https://camel.apache.org/contributing.html[get involved] :-)
The Camel riders!