Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Propagate quarkus.tls.trust-all in quarkus-spring-cloud-config-client extension #18428

Merged
merged 1 commit into from
Jul 6, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import io.quarkus.deployment.builditem.RunTimeConfigurationSourceValueBuildItem;
import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
import io.quarkus.runtime.ApplicationConfig;
import io.quarkus.runtime.TlsConfig;
import io.quarkus.spring.cloud.config.client.runtime.Response;
import io.quarkus.spring.cloud.config.client.runtime.SpringCloudConfigClientConfig;
import io.quarkus.spring.cloud.config.client.runtime.SpringCloudConfigClientRecorder;
Expand All @@ -36,9 +37,10 @@ public void registerForReflection(BuildProducer<ReflectiveClassBuildItem> reflec
@Record(ExecutionTime.RUNTIME_INIT)
public RunTimeConfigurationSourceValueBuildItem configure(SpringCloudConfigClientRecorder recorder,
SpringCloudConfigClientConfig springCloudConfigClientConfig,
ApplicationConfig applicationConfig) {
ApplicationConfig applicationConfig,
TlsConfig tlsConfig) {
return new RunTimeConfigurationSourceValueBuildItem(
recorder.create(springCloudConfigClientConfig, applicationConfig));
recorder.create(springCloudConfigClientConfig, applicationConfig, tlsConfig));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

import io.quarkus.runtime.ApplicationConfig;
import io.quarkus.runtime.RuntimeValue;
import io.quarkus.runtime.TlsConfig;
import io.quarkus.runtime.annotations.Recorder;
import io.quarkus.runtime.configuration.ProfileManager;

Expand All @@ -17,7 +18,7 @@ public class SpringCloudConfigClientRecorder {
private static final Logger log = Logger.getLogger(SpringCloudConfigClientRecorder.class);

public RuntimeValue<ConfigSourceProvider> create(SpringCloudConfigClientConfig springCloudConfigClientConfig,
ApplicationConfig applicationConfig) {
ApplicationConfig applicationConfig, TlsConfig tlsConfig) {
if (!springCloudConfigClientConfig.enabled) {
log.debug(
"No attempt will be made to obtain configuration from the Spring Cloud Config Server because the functionality has been disabled via configuration");
Expand All @@ -31,7 +32,7 @@ public RuntimeValue<ConfigSourceProvider> create(SpringCloudConfigClientConfig s
}

return new RuntimeValue<>(new SpringCloudConfigServerClientConfigSourceProvider(
springCloudConfigClientConfig, applicationConfig.name.get(), ProfileManager.getActiveProfile()));
springCloudConfigClientConfig, applicationConfig.name.get(), ProfileManager.getActiveProfile(), tlsConfig));
}

private RuntimeValue<ConfigSourceProvider> emptyRuntimeValue() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
import org.eclipse.microprofile.config.spi.ConfigSourceProvider;
import org.jboss.logging.Logger;

import io.quarkus.runtime.TlsConfig;

public class SpringCloudConfigServerClientConfigSourceProvider implements ConfigSourceProvider {

private static final Logger log = Logger.getLogger(SpringCloudConfigServerClientConfigSourceProvider.class);
Expand All @@ -23,12 +25,12 @@ public class SpringCloudConfigServerClientConfigSourceProvider implements Config

public SpringCloudConfigServerClientConfigSourceProvider(SpringCloudConfigClientConfig springCloudConfigClientConfig,
String applicationName,
String activeProfile) {
String activeProfile, TlsConfig tlsConfig) {
this.springCloudConfigClientConfig = springCloudConfigClientConfig;
this.applicationName = applicationName;
this.activeProfile = activeProfile;

springCloudConfigClientGateway = new VertxSpringCloudConfigGateway(springCloudConfigClientConfig);
springCloudConfigClientGateway = new VertxSpringCloudConfigGateway(springCloudConfigClientConfig, tlsConfig);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;

import io.quarkus.runtime.TlsConfig;
import io.smallrye.mutiny.Uni;
import io.vertx.core.net.JksOptions;
import io.vertx.core.net.KeyStoreOptionsBase;
Expand All @@ -43,7 +44,7 @@ public class VertxSpringCloudConfigGateway implements SpringCloudConfigClientGat
private final WebClient webClient;
private final URI baseURI;

public VertxSpringCloudConfigGateway(SpringCloudConfigClientConfig springCloudConfigClientConfig) {
public VertxSpringCloudConfigGateway(SpringCloudConfigClientConfig springCloudConfigClientConfig, TlsConfig tlsConfig) {
this.springCloudConfigClientConfig = springCloudConfigClientConfig;
try {
this.baseURI = determineBaseUri(springCloudConfigClientConfig);
Expand All @@ -52,16 +53,17 @@ public VertxSpringCloudConfigGateway(SpringCloudConfigClientConfig springCloudCo
+ "' of property 'quarkus.spring-cloud-config.url' is invalid", e);
}
this.vertx = Vertx.vertx();
this.webClient = createHttpClient(vertx, springCloudConfigClientConfig);
this.webClient = createHttpClient(vertx, springCloudConfigClientConfig, tlsConfig);
}

public static WebClient createHttpClient(Vertx vertx, SpringCloudConfigClientConfig springCloudConfig) {
public static WebClient createHttpClient(Vertx vertx, SpringCloudConfigClientConfig springCloudConfig,
TlsConfig tlsConfig) {

WebClientOptions webClientOptions = new WebClientOptions()
.setConnectTimeout((int) springCloudConfig.connectionTimeout.toMillis())
.setIdleTimeout((int) springCloudConfig.readTimeout.getSeconds());

boolean trustAll = springCloudConfig.trustCerts;
boolean trustAll = springCloudConfig.trustCerts || tlsConfig.trustAll;
try {
if (springCloudConfig.trustStore.isPresent()) {
Path trustStorePath = springCloudConfig.trustStore.get();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,16 @@
import com.github.tomakehurst.wiremock.WireMockServer;
import com.github.tomakehurst.wiremock.client.WireMock;

import io.quarkus.runtime.TlsConfig;

class SpringCloudConfigClientGatewayTest {

private static final int MOCK_SERVER_PORT = 9300;
private static final WireMockServer wireMockServer = new WireMockServer(MOCK_SERVER_PORT);

private static final SpringCloudConfigClientConfig springCloudConfigClientConfig = configForTesting();
private final SpringCloudConfigClientGateway sut = new VertxSpringCloudConfigGateway(
springCloudConfigClientConfig);
springCloudConfigClientConfig, new TlsConfig());

@BeforeAll
static void start() {
Expand Down