Hi,
I have configured my Client via Spring but it seems that now client
authentication is done.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:sec="http://cxf.apache.org/configuration/security"
xmlns:http="http://cxf.apache.org/transports/http/configuration"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xsi:schemaLocation="
http://cxf.apache.org/configuration/security
http://cxf.apache.org/schemas/configuration/security.xsd
http://cxf.apache.org/transports/http/configuration
http://cxf.apache.org/schemas/configuration/http-conf.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<http:conduit name="{ns://localhost/tls}Service.http-conduit">
<http:client ConnectionTimeout="30000" ReceiveTimeout="300000" />
<http:tlsClientParameters
secureSocketProtocol="SSL" disableCNCheck="true">
<sec:keyManagers keyPassword="password01">
<sec:keyStore type="JKS" password="password01" file="keystore.jks" />
</sec:keyManagers>
<sec:trustManagers>
<sec:keyStore type="JKS" password="changeit" file="truststore.jks" />
</sec:trustManagers>
</http:tlsClientParameters>
</http:conduit>
<bean id="client2Service" class="tls.client.Client"
factory-bean="clientFactory" factory-method="create" />
<bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="tls.svc.ServicePort" />
<property name="address" value="https://localhost:443/tls/service" />
</bean>
</beans>
but when I write all the configuration into a java-class it works:
public void init() throws Exception {
try {
ClassLoader cl = UVStClassLoaderContext.getContext();
WSDLLOCATION = cl.getResource(strPath2wsdl);
SERVICENAME = new QName(ns, srv_name);
Service service = new Service(WSDLLOCATION, SERVICENAME);
svcport = service.getService();
Client client = ClientProxy.getClient(svcport);
Map<String, Object> requestContext =
((BindingProvider)svcport).getRequestContext();
requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
ENDPOINTADDRESS);
HTTPConduit http = (HTTPConduit) client.getConduit();
TLSClientParameters tlsParams = new TLSClientParameters();
tlsParams.setSecureSocketProtocol("SSL");
tlsParams.setDisableCNCheck(true);
KeyStore keyStoreCC = KeyStore.getInstance("JKS");
String keypassCC = "password01";
File keyFile = new File("keystore.jks");
keyStoreCC.load(new FileInputStream(keyFile),
keypassCC.toCharArray());
KeyStore keyStoreTC = KeyStore.getInstance("JKS");
String trustpassTC = "changeit";
File trustFile = new File("truststore.jks");
keyStoreTC.load(new FileInputStream(trustFile),
trustpassTC.toCharArray());
TrustManagerFactory trustFactory =
TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustFactory.init(keyStoreTC);
TrustManager[] tm = trustFactory.getTrustManagers();
tlsParams.setTrustManagers(tm);
KeyManagerFactory keyFactory =
KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
keyFactory.init(keyStoreCC, keypassCC.toCharArray());
KeyManager[] km = keyFactory.getKeyManagers();
tlsParams.setKeyManagers(km);
tlsParams.setCipherSuitesFilter(null);
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(connectionTimeout);
httpClientPolicy.setReceiveTimeout(receiveTimeout);
http.setTlsClientParameters(tlsParams);
http.setClient(httpClientPolicy);
if (cfxLog) {
client.getInInterceptors().add(new LoggingInInterceptor());
client.getOutInterceptors().add(new
LoggingOutInterceptor());
}
}
catch (Exception e) {
throw e;
}
}
do you have any hints, thanks Alex