eID Security Token Service CXF Client

This Java library provides an implementation of the client side of the eID STS protocol. This library targets the Apache CXF JAX-WS runtime.

You need at least Apache CXF version 2.7.12. Tested Apache CXF versions: 2.7.12, 2.7.13, 2.7.16, 2.7.18. This eID STS CXF client does not work with Apache CXF version 3.

The Java client library is available within the e-contract.be Maven repository. Configure this Maven repository within your pom.xml as follows:

<repositories>
        <repository>
                <id>e-contract.be</id>
                <url>https://www.e-contract.be/maven2/</url>
        </repository>
</repositories>

Add the client library within your pom.xml dependencies element as follows:

<dependency>
        <groupId>be.e_contract.sts</groupId>
        <artifactId>sts-client-cxf</artifactId>
        <version>0.5.0</version>
</dependency>

The Apache CXF JAX-WS runtime needs the WS-Security modules. Hence add the following dependencies:

<dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
</dependency>
<dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-ws-policy</artifactId>
</dependency>
<dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-ws-security</artifactId>
</dependency>
<dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-ws-mex</artifactId>
</dependency>

Securing a JAX-WS client port for STS usage

After compiling the WSDL of a web service that has an STS WS-SecurityPolicy you can enable the security as follows:

import java.security.Security;
import be.fedict.commons.eid.jca.BeIDProvider;
import be.e_contract.sts.client.cxf.SecurityDecorator;

...
static {
    Security.addProvider(new BeIDProvider());
}

...
ExampleService exampleService = ExampleServiceFactory.newInstance();
ExampleServicePortType port = exampleService.getExampleServicePort();

SecurityDecorator securityDecorator = new SecurityDecorator(
        "example-office-key", "example-software-key");
securityDecorator.decorate((BindingProvider) port,
        "https://www.e-contract.be/iam/example");

String result = port.echoWithClaims("hello world");

Javadoc API documentation

Javadoc API documentation