Skip to content

Commit 47995aa

Browse files
lvydradarranl
authored andcommitted
[ELY-2753] Add connection-timeout-millis, connection-ttl-millis and socket-timeout-millis to OidcJsonConfiguration to allow oidc.json configuration to parse these attributes
1 parent bbc28f9 commit 47995aa

4 files changed

Lines changed: 68 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/Oidc.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,9 @@ public class Oidc {
7171
public static final String CORS_ALLOWED_METHODS = "cors-allowed-methods";
7272
public static final String CORS_EXPOSED_HEADERS = "cors-exposed-headers";
7373
public static final String CONNECTION_POOL_SIZE = "connection-pool-size";
74+
public static final String CONNECTION_TIMEOUT_MILLIS = "connection-timeout-millis";
75+
public static final String CONNECTION_TTL_MILLIS = "connection-ttl-millis";
76+
public static final String SOCKET_TIMEOUT_MILLIS = "socket-timeout-millis";
7477
public static final String CLIENTS_MANAGEMENT_REGISTER_NODE_PATH = "clients-managements/register-node";
7578
public static final String CLIENTS_MANAGEMENT_UNREGISTER_NODE_PATH = "clients-managements/unregister-node";
7679
public static final String CREDENTIALS = "credentials";

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

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
package org.wildfly.security.http.oidc;
2020

21+
import static org.wildfly.security.http.oidc.Oidc.CONNECTION_TIMEOUT_MILLIS;
22+
import static org.wildfly.security.http.oidc.Oidc.CONNECTION_TTL_MILLIS;
2123
import static org.wildfly.security.http.oidc.Oidc.DEFAULT_TOKEN_SIGNATURE_ALGORITHM;
2224
import static org.wildfly.security.http.oidc.Oidc.ADAPTER_STATE_COOKIE_PATH;
2325
import static org.wildfly.security.http.oidc.Oidc.ALLOW_ANY_HOSTNAME;
@@ -64,6 +66,7 @@
6466
import static org.wildfly.security.http.oidc.Oidc.REQUEST_OBJECT_SIGNING_KEYSTORE_PASSWORD;
6567
import static org.wildfly.security.http.oidc.Oidc.REQUEST_OBJECT_SIGNING_KEYSTORE_TYPE;
6668
import static org.wildfly.security.http.oidc.Oidc.SCOPE;
69+
import static org.wildfly.security.http.oidc.Oidc.SOCKET_TIMEOUT_MILLIS;
6770
import static org.wildfly.security.http.oidc.Oidc.SSL_REQUIRED;
6871
import static org.wildfly.security.http.oidc.Oidc.TOKEN_MINIMUM_TIME_TO_LIVE;
6972
import static org.wildfly.security.http.oidc.Oidc.TOKEN_SIGNATURE_ALGORITHM;
@@ -94,6 +97,7 @@
9497
USE_RESOURCE_ROLE_MAPPINGS, USE_REALM_ROLE_MAPPINGS,
9598
ENABLE_CORS, CORS_MAX_AGE, CORS_ALLOWED_METHODS, CORS_EXPOSED_HEADERS,
9699
EXPOSE_TOKEN, BEARER_ONLY, AUTODETECT_BEARER_ONLY, CONNECTION_POOL_SIZE,
100+
CONNECTION_TIMEOUT_MILLIS, CONNECTION_TTL_MILLIS, SOCKET_TIMEOUT_MILLIS,
97101
ALLOW_ANY_HOSTNAME, DISABLE_TRUST_MANAGER, TRUSTSTORE, TRUSTSTORE_PASSWORD,
98102
CLIENT_KEYSTORE, CLIENT_KEYSTORE_PASSWORD, CLIENT_KEY_PASSWORD,
99103
ALWAYS_REFRESH_TOKEN,
@@ -134,6 +138,12 @@ public class OidcJsonConfiguration {
134138
protected String requestObjectSigningKeyStoreType;
135139
@JsonProperty(CONNECTION_POOL_SIZE)
136140
protected int connectionPoolSize = 20;
141+
@JsonProperty(CONNECTION_TIMEOUT_MILLIS)
142+
protected int connectionTimeoutMillis = -1;
143+
@JsonProperty(CONNECTION_TTL_MILLIS)
144+
protected int connectionTtlMillis = -1;
145+
@JsonProperty(SOCKET_TIMEOUT_MILLIS)
146+
protected int socketTimeoutMillis = -1;
137147
@JsonProperty(ALWAYS_REFRESH_TOKEN)
138148
protected boolean alwaysRefreshToken = false;
139149
@JsonProperty(REGISTER_NODE_AT_STARTUP)
@@ -331,6 +341,30 @@ public void setConnectionPoolSize(int connectionPoolSize) {
331341
this.connectionPoolSize = connectionPoolSize;
332342
}
333343

344+
public int getConnectionTimeoutMillis() {
345+
return connectionTimeoutMillis;
346+
}
347+
348+
public void setConnectionTimeoutMillis(int connectionTimeoutMillis) {
349+
this.connectionTimeoutMillis = connectionTimeoutMillis;
350+
}
351+
352+
public int getConnectionTtlMillis() {
353+
return connectionTtlMillis;
354+
}
355+
356+
public void setConnectionTtlMillis(int connectionTtlMillis) {
357+
this.connectionTtlMillis = connectionTtlMillis;
358+
}
359+
360+
public int getSocketTimeoutMillis() {
361+
return socketTimeoutMillis;
362+
}
363+
364+
public void setSocketTimeoutMillis(int socketTimeoutMillis) {
365+
this.socketTimeoutMillis = socketTimeoutMillis;
366+
}
367+
334368
public boolean isAlwaysRefreshToken() {
335369
return alwaysRefreshToken;
336370
}

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
@@ -192,6 +192,11 @@ public void testMissingRequiredConfigurationOption() {
192192
OidcClientConfigurationBuilder.build(getOidcConfigurationMissingRequiredOption());
193193
}
194194

195+
@Test
196+
public void testTimeoutConfigurationOptions() throws Exception {
197+
OidcClientConfigurationBuilder.build(getOidcConfigurationInputStreamWithTimeoutOptions(5000, 5000, 5000));
198+
}
199+
195200
@Test
196201
public void testSucessfulAuthenticationWithAuthServerUrl() throws Exception {
197202
performAuthentication(getOidcConfigurationInputStream(), KeycloakConfiguration.ALICE, KeycloakConfiguration.ALICE_PASSWORD,
@@ -718,6 +723,23 @@ private InputStream getOidcConfigurationInputStream(String clientSecret, String
718723
return new ByteArrayInputStream(oidcConfig.getBytes(StandardCharsets.UTF_8));
719724
}
720725

726+
private InputStream getOidcConfigurationInputStreamWithTimeoutOptions(int connectionTimeoutMillis, int connectionTtlMillis, int socketTimeoutMillis) {
727+
String oidcConfig = "{\n" +
728+
" \"realm\" : \"" + TEST_REALM + "\",\n" +
729+
" \"resource\" : \"" + CLIENT_ID + "\",\n" +
730+
" \"public-client\" : \"false\",\n" +
731+
" \"connection-timeout-millis\" : \"" + connectionTimeoutMillis + "\",\n" +
732+
" \"connection-ttl-millis\" : \"" + connectionTtlMillis + "\",\n" +
733+
" \"socket-timeout-millis\" : \"" + socketTimeoutMillis + "\",\n" +
734+
" \"auth-server-url\" : \"" + KEYCLOAK_CONTAINER.getAuthServerUrl() + "\",\n" +
735+
" \"ssl-required\" : \"EXTERNAL\",\n" +
736+
" \"credentials\" : {\n" +
737+
" \"secret\" : \"" + CLIENT_SECRET + "\"\n" +
738+
" }\n" +
739+
"}";
740+
return new ByteArrayInputStream(oidcConfig.getBytes(StandardCharsets.UTF_8));
741+
}
742+
721743
private InputStream getOidcConfigurationInputStreamWithEnvironmentVariableExpression() {
722744
String oidcConfig = "{\n" +
723745
" \"" + RESOURCE + "\" : \"" + CLIENT_ID + "\",\n" +

0 commit comments

Comments
 (0)