Skip to content

Commit 6d16c0a

Browse files
committed
Fix tests after Apache HttpClient5 / HttpCore5 update since those use deprecated APIs
Signed-off-by: Andriy Redko <[email protected]>
1 parent 48be2af commit 6d16c0a

File tree

6 files changed

+34
-32
lines changed

6 files changed

+34
-32
lines changed

src/main/java/com/amazon/dlic/auth/http/jwt/keybyoidc/KeySetRetriever.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.apache.hc.client5.http.impl.classic.HttpClients;
2929
import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder;
3030
import org.apache.hc.client5.http.io.HttpClientConnectionManager;
31+
import org.apache.hc.client5.http.ssl.DefaultClientTlsStrategy;
3132
import org.apache.hc.core5.http.HttpEntity;
3233
import org.apache.logging.log4j.LogManager;
3334
import org.apache.logging.log4j.Logger;
@@ -223,7 +224,7 @@ private CloseableHttpClient createHttpClient(HttpCacheStorage httpCacheStorage)
223224

224225
if (sslConfig != null) {
225226
final HttpClientConnectionManager cm = PoolingHttpClientConnectionManagerBuilder.create()
226-
.setSSLSocketFactory(sslConfig.toSSLConnectionSocketFactory())
227+
.setTlsSocketStrategy(new DefaultClientTlsStrategy(sslConfig.getSslContext()))
227228
.build();
228229

229230
builder.setConnectionManager(cm);

src/main/java/org/opensearch/security/auditlog/sink/WebhookSink.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,13 @@
3232
import org.apache.hc.client5.http.impl.classic.HttpClients;
3333
import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder;
3434
import org.apache.hc.client5.http.io.HttpClientConnectionManager;
35+
import org.apache.hc.client5.http.ssl.DefaultClientTlsStrategy;
3536
import org.apache.hc.client5.http.ssl.DefaultHostnameVerifier;
3637
import org.apache.hc.client5.http.ssl.NoopHostnameVerifier;
37-
import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactory;
3838
import org.apache.hc.core5.http.ContentType;
3939
import org.apache.hc.core5.http.io.SocketConfig;
4040
import org.apache.hc.core5.http.io.entity.StringEntity;
41+
import org.apache.hc.core5.reactor.ssl.SSLBufferMode;
4142
import org.apache.hc.core5.ssl.SSLContextBuilder;
4243
import org.apache.hc.core5.ssl.TrustStrategy;
4344
import org.apache.http.HttpStatus;
@@ -380,15 +381,16 @@ public boolean isTrusted(X509Certificate[] chain, String authType) {
380381
HttpClientBuilder hcb = HttpClients.custom().setDefaultRequestConfig(config);
381382
if (!verifySSL) {
382383
SSLContext sslContext = SSLContextBuilder.create().loadTrustMaterial(trustAllStrategy).build();
383-
final SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
384+
final DefaultClientTlsStrategy sslsf = new DefaultClientTlsStrategy(
384385
sslContext,
385386
null,
386387
null,
388+
SSLBufferMode.STATIC,
387389
NoopHostnameVerifier.INSTANCE
388390
);
389391

390392
final HttpClientConnectionManager cm = PoolingHttpClientConnectionManagerBuilder.create()
391-
.setSSLSocketFactory(sslsf)
393+
.setTlsSocketStrategy(sslsf)
392394
.setDefaultSocketConfig(SocketConfig.custom().setSoTimeout(timeout, TimeUnit.SECONDS).build())
393395
.build();
394396
hcb.setConnectionManager(cm);
@@ -399,10 +401,16 @@ public boolean isTrusted(X509Certificate[] chain, String authType) {
399401
return HttpClients.custom().setDefaultRequestConfig(config).build();
400402
}
401403
SSLContext sslContext = SSLContextBuilder.create().loadTrustMaterial(effectiveTruststore, null).build();
402-
final SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, null, null, new DefaultHostnameVerifier());
404+
final DefaultClientTlsStrategy sslsf = new DefaultClientTlsStrategy(
405+
sslContext,
406+
null,
407+
null,
408+
SSLBufferMode.STATIC,
409+
new DefaultHostnameVerifier()
410+
);
403411

404412
final HttpClientConnectionManager cm = PoolingHttpClientConnectionManagerBuilder.create()
405-
.setSSLSocketFactory(sslsf)
413+
.setTlsSocketStrategy(sslsf)
406414
.setDefaultSocketConfig(SocketConfig.custom().setSoTimeout(timeout, TimeUnit.SECONDS).build())
407415
.build();
408416
hcb.setConnectionManager(cm);

src/main/java/org/opensearch/security/httpclient/HttpClient.java

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -30,23 +30,21 @@
3030
import java.util.stream.Collectors;
3131
import javax.net.ssl.HostnameVerifier;
3232
import javax.net.ssl.SSLContext;
33-
import javax.net.ssl.SSLEngine;
3433
import javax.net.ssl.SSLParameters;
3534

3635
import com.google.common.collect.Lists;
3736
import org.apache.hc.client5.http.config.RequestConfig;
3837
import org.apache.hc.client5.http.impl.async.HttpAsyncClientBuilder;
3938
import org.apache.hc.client5.http.impl.nio.PoolingAsyncClientConnectionManagerBuilder;
4039
import org.apache.hc.client5.http.nio.AsyncClientConnectionManager;
41-
import org.apache.hc.client5.http.ssl.ClientTlsStrategyBuilder;
40+
import org.apache.hc.client5.http.ssl.DefaultClientTlsStrategy;
4241
import org.apache.hc.client5.http.ssl.DefaultHostnameVerifier;
4342
import org.apache.hc.client5.http.ssl.NoopHostnameVerifier;
44-
import org.apache.hc.core5.function.Factory;
4543
import org.apache.hc.core5.http.HttpHeaders;
4644
import org.apache.hc.core5.http.HttpHost;
4745
import org.apache.hc.core5.http.message.BasicHeader;
4846
import org.apache.hc.core5.http.nio.ssl.TlsStrategy;
49-
import org.apache.hc.core5.reactor.ssl.TlsDetails;
47+
import org.apache.hc.core5.reactor.ssl.SSLBufferMode;
5048
import org.apache.hc.core5.ssl.PrivateKeyDetails;
5149
import org.apache.hc.core5.ssl.PrivateKeyStrategy;
5250
import org.apache.hc.core5.ssl.SSLContextBuilder;
@@ -280,19 +278,13 @@ public String chooseAlias(Map<String, PrivateKeyDetails> aliases, SSLParameters
280278
final HostnameVerifier hnv = verifyHostnames ? new DefaultHostnameVerifier() : NoopHostnameVerifier.INSTANCE;
281279

282280
final SSLContext sslContext = sslContextBuilder.build();
283-
TlsStrategy tlsStrategy = ClientTlsStrategyBuilder.create()
284-
.setSslContext(sslContext)
285-
.setTlsVersions(supportedProtocols)
286-
.setCiphers(supportedCipherSuites)
287-
.setHostnameVerifier(hnv)
288-
// See please https://issues.apache.org/jira/browse/HTTPCLIENT-2219
289-
.setTlsDetailsFactory(new Factory<SSLEngine, TlsDetails>() {
290-
@Override
291-
public TlsDetails create(final SSLEngine sslEngine) {
292-
return new TlsDetails(sslEngine.getSession(), sslEngine.getApplicationProtocol());
293-
}
294-
})
295-
.build();
281+
final TlsStrategy tlsStrategy = new DefaultClientTlsStrategy(
282+
sslContext,
283+
supportedProtocols,
284+
supportedCipherSuites,
285+
SSLBufferMode.STATIC,
286+
hnv
287+
);
296288

297289
final AsyncClientConnectionManager cm = PoolingAsyncClientConnectionManagerBuilder.create().setTlsStrategy(tlsStrategy).build();
298290
httpClientBuilder.setConnectionManager(cm);

src/test/java/org/opensearch/security/InitializationIntegrationTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ public void testWhoAmIForceHttp1() throws Exception {
178178
Response whoAmIRes = restHighLevelClient.getLowLevelClient().performRequest(new Request("GET", "/_plugins/_security/whoami"));
179179
assertThat(200, is(whoAmIRes.getStatusLine().getStatusCode()));
180180
// The HTTP/1.1 is forced and should be used instead
181-
assertThat(HttpVersion.HTTP_1_1, is(whoAmIRes.getStatusLine().getProtocolVersion()));
181+
assertThat(whoAmIRes.getStatusLine().getProtocolVersion(), is(HttpVersion.HTTP_1_1));
182182
JsonNode whoAmIResNode = DefaultObjectMapper.objectMapper.readTree(whoAmIRes.getEntity().getContent());
183183
String whoAmIResponsePayload = whoAmIResNode.toPrettyString();
184184
assertThat(whoAmIResponsePayload, whoAmIResNode.get("dn").asText(), is("CN=spock,OU=client,O=client,L=Test,C=DE"));

src/test/java/org/opensearch/security/test/AbstractSecurityUnitTest.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@
4444
import com.carrotsearch.randomizedtesting.annotations.ThreadLeakScope.Scope;
4545
import com.google.common.collect.ImmutableList;
4646
import com.google.common.collect.ImmutableSet;
47+
import org.apache.hc.client5.http.config.TlsConfig;
4748
import org.apache.hc.client5.http.impl.nio.PoolingAsyncClientConnectionManagerBuilder;
48-
import org.apache.hc.client5.http.nio.AsyncClientConnectionManager;
4949
import org.apache.hc.client5.http.ssl.ClientTlsStrategyBuilder;
5050
import org.apache.hc.client5.http.ssl.NoopHostnameVerifier;
5151
import org.apache.hc.core5.function.Factory;
@@ -197,14 +197,13 @@ public TlsDetails create(final SSLEngine sslEngine) {
197197
})
198198
.build();
199199

200-
final AsyncClientConnectionManager cm = PoolingAsyncClientConnectionManagerBuilder.create()
201-
.setTlsStrategy(tlsStrategy)
202-
.build();
203-
builder.setConnectionManager(cm);
200+
final PoolingAsyncClientConnectionManagerBuilder cm = PoolingAsyncClientConnectionManagerBuilder.create()
201+
.setTlsStrategy(tlsStrategy);
202+
204203
if (httpVersionPolicy != null) {
205-
builder.setVersionPolicy(httpVersionPolicy);
204+
cm.setDefaultTlsConfig(TlsConfig.custom().setVersionPolicy(httpVersionPolicy).build());
206205
}
207-
return builder;
206+
return builder.setConnectionManager(cm.build());
208207
});
209208
return new RestHighLevelClient(restClientBuilder);
210209
} catch (Exception e) {

src/test/java/org/opensearch/security/test/helper/rest/RestHelper.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,9 @@ public TlsDetails create(final SSLEngine sslEngine) {
381381
hcb.setConnectionManager(cm);
382382
}
383383

384-
final RequestConfig.Builder requestConfigBuilder = RequestConfig.custom().setResponseTimeout(Timeout.ofSeconds(60));
384+
final RequestConfig.Builder requestConfigBuilder = RequestConfig.custom()
385+
.setResponseTimeout(Timeout.ofSeconds(60))
386+
.setProtocolUpgradeEnabled(false);
385387

386388
return hcb.setDefaultRequestConfig(requestConfigBuilder.build()).disableAutomaticRetries().build();
387389
}

0 commit comments

Comments
 (0)