HTTPClient is not using Protocol configured in HostConfiguration when using
mutual Auth in connections
------------------------------------------------------------------------------------------------------
Key: HTTPCLIENT-744
URL: https://issues.apache.org/jira/browse/HTTPCLIENT-744
Project: HttpComponents HttpClient
Issue Type: Bug
Components: HttpClient
Affects Versions: 3.1 Final
Reporter: Endrigo Antonini
Priority: Critical
I'm using HTTClient to access a WS which are using mutual authentication.
So I have to "create" a https protocol that will do the Handshake process.
Every example that I found on Internet, it was registering this protocol as the
default protocol of HTTPS connections, but in my system this is a big problem,
because i'm connecting others https urls that are not using mutual
authentication. Example:
Protocol.registerProtocol("https", myprotocol);
So I found a way to set the Protocol in the HostConfiguration doing like this:
SecureProtocolSocketFactory auth = new
AuthSSLProtocolSocketFactory(file.toURI().toURL(), pass, null, null);
Protocol trustHttps = new Protocol(url, (ProtocolSocketFactory) auth,
certificate.getPort());
HostConfiguration hostConfiguration = new HostConfiguration();
hostConfiguration.setHost(url, certificate.getPort(), trustHttps);
httpclient.execute(hostConfiguration,method);
But i was still having the problem.
I found inside class HTTClient the error.
It's on the method "executeMethod(HostConfiguration hostconfig, final
HttpMethod method, final HttpState state)" on line "hostconfig.setHost(uri)".
If you trace the method setHost(URI), you will see that this method is getting
the standard protocol (that is register in Protocol) to access this url.
I fixed this problem changing this part of the code to:
hostconfig = (HostConfiguration) hostconfig.clone();
if (hostconfig.getProtocol() == null) {
if (uri.isAbsoluteURI()) {
hostconfig.setHost(uri);
}
} else {
int port = uri.getPort();
if (port <= 0) port = hostconfig.getProtocol().getDefaultPort();
hostconfig.setHost(uri.getHost(), uri.getPort(),
hostconfig.getProtocol());
}
This solution it's running in my system and it's working.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]