Ошибка при вызове https через прокси с использованием CXF - PullRequest
0 голосов
/ 11 апреля 2019

В camel-cxf мне нужно вызвать веб-службу SOAP (предоставляемую в https) через прокси-сервер: настроить http-канал следующим образом

public void configureClient(Client client) {

        String proxySrv = Util.getProperty(Constants.Config.PROXY_SRV);
        int proxyPort = new Integer(Util.getProperty(Constants.Config.PROXY_PORT));
        log.info("Configurazione del server proxy:'"+proxySrv+"' port:'"+proxyPort+"'");
        HTTPConduit conduit = (HTTPConduit) client.getConduit();
        HTTPClientPolicy policy = new HTTPClientPolicy();
        policy.setProxyServer(proxySrv); // set proxy host
        policy.setProxyServerPort(proxyPort); // set proxy port
        policy.setProxyServerType(ProxyServerType.SOCKS);
        conduit.setClient(policy);
        conduit.setAuthSupplier(new DefaultBasicAuthSupplier());
        boolean proxyAuthEnabled = new Boolean(Util.getProperty(Constants.Config.PROXY_AUTH_EN));
        String user = Util.getProperty(Constants.Config.PROXY_USER);
        String pass = Util.getProperty(Constants.Config.PROXY_PASS);
        log.info("Recuperati username:'+"+user+"' e password per il proxy:'"+proxySrv+"' port:'"+proxyPort+"'");
        if (proxyAuthEnabled) {
            ProxyAuthorizationPolicy ap =  new ProxyAuthorizationPolicy();
            ap.setUserName(user);
            ap.setPassword(pass);
            conduit.setProxyAuthorization(ap);
//          conduit.getAuthorization().setUserName(user);
//          conduit.getAuthorization().setPassword(pass);
            log.info("Autenticazione abilitata per userName ='"+user+"' per il proxy:'"+proxySrv+"' port:'"+proxyPort+"'");

        }

работает для вызова http (без указания типа прокси-сервера), но не работает для вызова https. Для этого прокси требуется базовая аутентификация.

Читая различные статьи, я увидел, что в CXF есть ошибка, которая не отправляет авторизацию заголовка при вызове CONNECT (и фактически я получаю 407 Требуется авторизация -> даже если с теми же учетными данными, что и при вызовах http, это работает ).

Есть ли способ это исправить? Я читал о решении Оливье Биллара

https://www.mail-archive.com/users@cxf.apache.org/msg06422.html

но я не понял этого решения (и я не могу импортировать в код любое хранилище ключей).

Спасибо

...