Skip to content

Commit 028c6e4

Browse files
authored
Merge pull request #2279 from ivassile/JBEAP-30001
[ELY-2753] Add connection-timeout-millis, connection-ttl-millis and
2 parents 57a6f85 + 3dcce15 commit 028c6e4

3 files changed

Lines changed: 62 additions & 0 deletions

File tree

http/oidc/src/main/java/org/wildfly/security/http/oidc/HttpClientBuilder.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,15 @@ public HttpClient build(OidcJsonConfiguration oidcClientConfig) {
275275
if (oidcClientConfig.getConnectionPoolSize() > 0) {
276276
size = oidcClientConfig.getConnectionPoolSize();
277277
}
278+
if (oidcClientConfig.getConnectionTimeoutMillis() > 0) {
279+
setEstablishConnectionTimeout(oidcClientConfig.getConnectionTimeoutMillis(), establishConnectionTimeoutUnits);
280+
}
281+
if (oidcClientConfig.getConnectionTtlMillis() > 0) {
282+
setConnectionTimeToLive(oidcClientConfig.getConnectionTtlMillis(), connectionTimeToLiveUnit);
283+
}
284+
if (oidcClientConfig.getSocketTimeoutMillis() > 0) {
285+
setSocketTimeout(oidcClientConfig.getSocketTimeoutMillis(), socketTimeoutUnits);
286+
}
278287
HttpClientBuilder.HostnameVerificationPolicy policy = HttpClientBuilder.HostnameVerificationPolicy.WILDCARD;
279288
if (oidcClientConfig.isAllowAnyHostname()) {
280289
policy = HttpClientBuilder.HostnameVerificationPolicy.ANY;

http/oidc/src/main/java/org/wildfly/security/http/oidc/OidcJsonConfiguration.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
"enable-cors", "cors-max-age", "cors-allowed-methods", "cors-exposed-headers",
4141
"expose-token", "bearer-only", "autodetect-bearer-only",
4242
"connection-pool-size",
43+
"connection-timeout-millis", "connection-ttl-millis", "socket-timeout-millis",
4344
"allow-any-hostname", "disable-trust-manager", "truststore", "truststore-password",
4445
"client-keystore", "client-keystore-password", "client-key-password",
4546
"always-refresh-token",
@@ -66,6 +67,12 @@ public class OidcJsonConfiguration {
6667
protected String clientKeyPassword;
6768
@JsonProperty("connection-pool-size")
6869
protected int connectionPoolSize = 20;
70+
@JsonProperty("connection-timeout-millis")
71+
protected int connectionTimeoutMillis = -1;
72+
@JsonProperty("connection-ttl-millis")
73+
protected int connectionTtlMillis = -1;
74+
@JsonProperty("socket-timeout-millis")
75+
protected int socketTimeoutMillis = -1;
6976
@JsonProperty("always-refresh-token")
7077
protected boolean alwaysRefreshToken = false;
7178
@JsonProperty("register-node-at-startup")
@@ -210,6 +217,30 @@ public void setConnectionPoolSize(int connectionPoolSize) {
210217
this.connectionPoolSize = connectionPoolSize;
211218
}
212219

220+
public int getConnectionTimeoutMillis() {
221+
return connectionTimeoutMillis;
222+
}
223+
224+
public void setConnectionTimeoutMillis(int connectionTimeoutMillis) {
225+
this.connectionTimeoutMillis = connectionTimeoutMillis;
226+
}
227+
228+
public int getConnectionTtlMillis() {
229+
return connectionTtlMillis;
230+
}
231+
232+
public void setConnectionTtlMillis(int connectionTtlMillis) {
233+
this.connectionTtlMillis = connectionTtlMillis;
234+
}
235+
236+
public int getSocketTimeoutMillis() {
237+
return socketTimeoutMillis;
238+
}
239+
240+
public void setSocketTimeoutMillis(int socketTimeoutMillis) {
241+
this.socketTimeoutMillis = socketTimeoutMillis;
242+
}
243+
213244
public boolean isAlwaysRefreshToken() {
214245
return alwaysRefreshToken;
215246
}

http/oidc/src/test/java/org/wildfly/security/http/oidc/OidcTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,11 @@ public void testMissingRequiredConfigurationOption() {
147147
OidcClientConfigurationBuilder.build(getOidcConfigurationMissingRequiredOption());
148148
}
149149

150+
@Test
151+
public void testTimeoutConfigurationOptions() throws Exception {
152+
OidcClientConfigurationBuilder.build(getOidcConfigurationInputStreamWithTimeoutOptions(5000, 5000, 5000));
153+
}
154+
150155
@Test
151156
public void testSucessfulAuthenticationWithAuthServerUrl() throws Exception {
152157
performAuthentication(getOidcConfigurationInputStream(), KeycloakConfiguration.ALICE, KeycloakConfiguration.ALICE_PASSWORD,
@@ -463,6 +468,23 @@ private InputStream getOidcConfigurationInputStream(String clientSecret, String
463468
return new ByteArrayInputStream(oidcConfig.getBytes(StandardCharsets.UTF_8));
464469
}
465470

471+
private InputStream getOidcConfigurationInputStreamWithTimeoutOptions(int connectionTimeoutMillis, int connectionTtlMillis, int socketTimeoutMillis) {
472+
String oidcConfig = "{\n" +
473+
" \"realm\" : \"" + TEST_REALM + "\",\n" +
474+
" \"resource\" : \"" + CLIENT_ID + "\",\n" +
475+
" \"public-client\" : \"false\",\n" +
476+
" \"connection-timeout-millis\" : \"" + connectionTimeoutMillis + "\",\n" +
477+
" \"connection-ttl-millis\" : \"" + connectionTtlMillis + "\",\n" +
478+
" \"socket-timeout-millis\" : \"" + socketTimeoutMillis + "\",\n" +
479+
" \"auth-server-url\" : \"" + KEYCLOAK_CONTAINER.getAuthServerUrl() + "\",\n" +
480+
" \"ssl-required\" : \"EXTERNAL\",\n" +
481+
" \"credentials\" : {\n" +
482+
" \"secret\" : \"" + CLIENT_SECRET + "\"\n" +
483+
" }\n" +
484+
"}";
485+
return new ByteArrayInputStream(oidcConfig.getBytes(StandardCharsets.UTF_8));
486+
}
487+
466488
private InputStream getOidcConfigurationInputStreamWithEnvironmentVariableExpression() {
467489
String oidcConfig = "{\n" +
468490
" \"resource\" : \"" + CLIENT_ID + "\",\n" +

0 commit comments

Comments
 (0)