Skip to content

Commit c8ed0c8

Browse files
committed
Properly configure the http client in the presence of user credentials.
1 parent 30efd0c commit c8ed0c8

File tree

2 files changed

+26
-10
lines changed

2 files changed

+26
-10
lines changed

java/client/src/org/openqa/selenium/remote/HttpCommandExecutor.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,13 +99,14 @@ public HttpCommandExecutor(Map<String, CommandInfo> additionalCommands, URL addr
9999
httpClientFactory = new HttpClientFactory();
100100
}
101101
}
102-
client = httpClientFactory.getHttpClient();
102+
103103
if (addressOfRemoteServer != null && addressOfRemoteServer.getUserInfo() != null) {
104104
// Use HTTP Basic auth
105105
UsernamePasswordCredentials credentials = new
106106
UsernamePasswordCredentials(addressOfRemoteServer.getUserInfo());
107-
((DefaultHttpClient) client).getCredentialsProvider().
108-
setCredentials(AuthScope.ANY, credentials);
107+
client = httpClientFactory.createHttpClient(credentials);
108+
} else {
109+
client = httpClientFactory.getHttpClient();
109110
}
110111

111112
// Some machines claim "localhost.localdomain" is the same as "localhost".

java/client/src/org/openqa/selenium/remote/internal/HttpClientFactory.java

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121
import org.apache.http.HttpRequest;
2222
import org.apache.http.HttpResponse;
2323
import org.apache.http.ProtocolException;
24+
import org.apache.http.auth.AuthScope;
25+
import org.apache.http.auth.Credentials;
26+
import org.apache.http.client.CredentialsProvider;
2427
import org.apache.http.client.HttpClient;
2528
import org.apache.http.client.RedirectStrategy;
2629
import org.apache.http.client.config.RequestConfig;
@@ -33,6 +36,7 @@
3336
import org.apache.http.conn.socket.ConnectionSocketFactory;
3437
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
3538
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
39+
import org.apache.http.impl.client.BasicCredentialsProvider;
3640
import org.apache.http.impl.client.CloseableHttpClient;
3741
import org.apache.http.impl.client.HttpClientBuilder;
3842
import org.apache.http.impl.conn.DefaultSchemePortResolver;
@@ -51,13 +55,7 @@ public class HttpClientFactory {
5155
getClientConnectionManager();
5256

5357
public HttpClientFactory() {
54-
httpClient = HttpClientBuilder.create()
55-
.setConnectionManager(getClientConnectionManager())
56-
.setDefaultSocketConfig(createSocketConfig())
57-
.setDefaultSocketConfig(createSocketConfig())
58-
.setRoutePlanner(createRoutePlanner())
59-
.setDefaultRequestConfig(createRequestConfig())
60-
.build();
58+
httpClient = createHttpClient(null);
6159
}
6260

6361
private static HttpClientConnectionManager getClientConnectionManager() {
@@ -78,6 +76,23 @@ public HttpClient getHttpClient() {
7876
return httpClient;
7977
}
8078

79+
public CloseableHttpClient createHttpClient(Credentials credentials) {
80+
HttpClientBuilder builder = HttpClientBuilder.create()
81+
.setConnectionManager(getClientConnectionManager())
82+
.setDefaultSocketConfig(createSocketConfig())
83+
.setDefaultSocketConfig(createSocketConfig())
84+
.setRoutePlanner(createRoutePlanner())
85+
.setDefaultRequestConfig(createRequestConfig());
86+
87+
if (credentials != null) {
88+
CredentialsProvider provider = new BasicCredentialsProvider();
89+
provider.setCredentials(AuthScope.ANY, credentials);
90+
builder.setDefaultCredentialsProvider(provider);
91+
}
92+
93+
return builder.build();
94+
}
95+
8196
public HttpClient getGridHttpClient(int connection_timeout, int socket_timeout) {
8297
gridClientConnectionManager.closeIdleConnections(100, MILLISECONDS);
8398

0 commit comments

Comments
 (0)