diff --git a/enrollment-server-onboarding/src/main/java/com/wultra/app/onboardingserver/presencecheck/iproov/config/IProovConfig.java b/enrollment-server-onboarding/src/main/java/com/wultra/app/onboardingserver/presencecheck/iproov/config/IProovConfig.java index b0c96b91c..bd8a4f18d 100644 --- a/enrollment-server-onboarding/src/main/java/com/wultra/app/onboardingserver/presencecheck/iproov/config/IProovConfig.java +++ b/enrollment-server-onboarding/src/main/java/com/wultra/app/onboardingserver/presencecheck/iproov/config/IProovConfig.java @@ -28,6 +28,7 @@ import io.netty.channel.ChannelOption; import lombok.extern.slf4j.Slf4j; import net.minidev.json.JSONObject; +import org.apache.commons.lang3.StringUtils; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; @@ -55,6 +56,7 @@ import org.springframework.web.util.UriComponentsBuilder; import reactor.netty.http.client.HttpClient; import reactor.netty.resources.ConnectionProvider; +import reactor.netty.transport.ProxyProvider; import java.time.Duration; import java.util.Map; @@ -178,9 +180,26 @@ private static WebClient createWebClient(final ExchangeFilterFunction filter, IP final ConnectionProvider connectionProvider = ConnectionProvider.builder("custom") .maxIdleTime(maxIdleTime) .build(); - final HttpClient httpClient = HttpClient.create(connectionProvider) + HttpClient httpClient = HttpClient.create(connectionProvider) .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, connectionTimeout) .responseTimeout(responseTimeout); + + if (restClientConfig.isProxyEnabled()) { + logger.debug("Configuring proxy {}:{}", restClientConfig.getProxyHost(), restClientConfig.getProxyPort()); + httpClient = httpClient.proxy((proxySpec) -> { + final ProxyProvider.Builder proxyBuilder = proxySpec + .type(ProxyProvider.Proxy.HTTP) + .host(restClientConfig.getProxyHost()) + .port(restClientConfig.getProxyPort()); + if (StringUtils.isNotBlank(restClientConfig.getProxyUsername())) { + proxyBuilder.username(restClientConfig.getProxyUsername()); + proxyBuilder.password(s -> restClientConfig.getProxyPassword()); + } + + proxyBuilder.build(); + }); + } + final ReactorClientHttpConnector connector = new ReactorClientHttpConnector(httpClient); return WebClient.builder()