/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.cxf.transport.http.spring; import javax.net.ssl.KeyManager; import javax.net.ssl.TrustManager; import javax.net.ssl.X509KeyManager; import javax.net.ssl.X509TrustManager; import javax.xml.namespace.QName; import org.apache.cxf.Bus; import org.apache.cxf.BusFactory; import org.apache.cxf.bus.spring.SpringBusFactory; import org.apache.cxf.configuration.jsse.TLSClientParameters; import org.apache.cxf.configuration.jsse.TLSParameterJaxBUtils; import org.apache.cxf.configuration.security.AuthorizationPolicy; import org.apache.cxf.configuration.security.FiltersType; import org.apache.cxf.configuration.security.KeyManagersType; import org.apache.cxf.configuration.security.KeyStoreType; import org.apache.cxf.configuration.security.TrustManagersType; import org.apache.cxf.service.model.EndpointInfo; import org.apache.cxf.transport.http.HTTPConduit; import org.apache.cxf.transport.http.HTTPTransportFactory; import org.apache.cxf.transports.http.configuration.HTTPClientPolicy; import org.junit.After; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; /** * */ public class HttpConduitConfigurationTest extends Assert { private static EndpointInfo ei; private Bus bus; @BeforeClass public static void setUpOnce() { ei = new EndpointInfo(); ei.setName(new QName("http://apache.org/hello_world", "HelloWorld")); ei.setAddress("https://localhost:8443/nopath"); } @After public void tearDown() { bus.shutdown(true); BusFactory.setDefaultBus(null); } @Test public void testConduitBean() throws Exception { SpringBusFactory factory = new SpringBusFactory(); bus = factory.createBus("org/apache/cxf/transport/http/spring/conduit-bean.xml"); HTTPTransportFactory atf = new HTTPTransportFactory(); HTTPConduit conduit = (HTTPConduit)atf.getConduit(ei, bus); verifyConduit(conduit); } @Test public void testConduitBeanWithTLSReferences() throws Exception { SpringBusFactory factory = new SpringBusFactory(); bus = factory.createBus("org/apache/cxf/transport/http/spring/conduit-tlsrefs-bean.xml"); HTTPTransportFactory atf = new HTTPTransportFactory(); HTTPConduit conduit = (HTTPConduit)atf.getConduit(ei, bus); verifyConduit(conduit); } private void verifyConduit(HTTPConduit conduit) { AuthorizationPolicy authp = conduit.getAuthorization(); assertNotNull(authp); assertEquals("Betty", authp.getUserName()); assertEquals("password", authp.getPassword()); TLSClientParameters tlscps = conduit.getTlsClientParameters(); assertNotNull(tlscps); assertTrue(tlscps.isDisableCNCheck()); assertEquals(3600000, tlscps.getSslCacheTimeout()); KeyManager[] kms = tlscps.getKeyManagers(); assertTrue(kms != null && kms.length == 1); assertTrue(kms[0] instanceof X509KeyManager); TrustManager[] tms = tlscps.getTrustManagers(); assertTrue(tms != null && tms.length == 1); assertTrue(tms[0] instanceof X509TrustManager); FiltersType csfs = tlscps.getCipherSuitesFilter(); assertNotNull(csfs); assertEquals(5, csfs.getInclude().size()); assertEquals(1, csfs.getExclude().size()); HTTPClientPolicy clientPolicy = conduit.getClient(); assertEquals(10240, clientPolicy.getChunkLength()); } public static final class ManagersFactory { public static KeyManager[] getKeyManagers() { KeyManagersType kmt = new KeyManagersType(); KeyStoreType kst = new KeyStoreType(); kst.setResource("org/apache/cxf/transport/https/resources/Bethal.jks"); kst.setPassword("password"); kst.setType("JKS"); kmt.setKeyStore(kst); kmt.setKeyPassword("password"); try { return TLSParameterJaxBUtils.getKeyManagers(kmt); } catch (Exception e) { throw new RuntimeException("failed to retrieve key managers", e); } } public static TrustManager[] getTrustManagers() { TrustManagersType tmt = new TrustManagersType(); KeyStoreType kst = new KeyStoreType(); kst.setResource("org/apache/cxf/transport/https/resources/Gordy.jks"); kst.setPassword("password"); kst.setType("JKS"); tmt.setKeyStore(kst); try { return TLSParameterJaxBUtils.getTrustManagers(tmt, false); } catch (Exception e) { throw new RuntimeException("failed to retrieve trust managers", e); } } } }