From cde355e5e548ec21f05ffabd527daeac08248e54 Mon Sep 17 00:00:00 2001 From: spencergibb Date: Mon, 15 Mar 2021 21:33:41 -0400 Subject: [PATCH] Provides a way to disable DecryptEnvironmentPostProcessor. Fixes gh-927 --- .../encrypt/DecryptEnvironmentPostProcessor.java | 6 +++++- .../additional-spring-configuration-metadata.json | 6 ++++++ .../bootstrap/encrypt/EncryptionIntegrationTests.java | 10 ++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/spring-cloud-context/src/main/java/org/springframework/cloud/bootstrap/encrypt/DecryptEnvironmentPostProcessor.java b/spring-cloud-context/src/main/java/org/springframework/cloud/bootstrap/encrypt/DecryptEnvironmentPostProcessor.java index 96ab042e..18d82a52 100644 --- a/spring-cloud-context/src/main/java/org/springframework/cloud/bootstrap/encrypt/DecryptEnvironmentPostProcessor.java +++ b/spring-cloud-context/src/main/java/org/springframework/cloud/bootstrap/encrypt/DecryptEnvironmentPostProcessor.java @@ -52,7 +52,7 @@ public class DecryptEnvironmentPostProcessor extends AbstractEnvironmentDecrypt @Override public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { - if (bootstrapEnabled(environment) || useLegacyProcessing(environment)) { + if (bootstrapEnabled(environment) || useLegacyProcessing(environment) || !isEnabled(environment)) { return; } if (!ClassUtils.isPresent("org.springframework.security.crypto.encrypt.TextEncryptor", null)) { @@ -71,4 +71,8 @@ public class DecryptEnvironmentPostProcessor extends AbstractEnvironmentDecrypt } + protected Boolean isEnabled(ConfigurableEnvironment environment) { + return environment.getProperty("spring.cloud.decrypt-environment-post-processor.enabled", Boolean.class, true); + } + } diff --git a/spring-cloud-context/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-cloud-context/src/main/resources/META-INF/additional-spring-configuration-metadata.json index affe4415..835dae75 100644 --- a/spring-cloud-context/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-cloud-context/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -47,6 +47,12 @@ "type": "java.lang.String", "description": "Comma separated list of class names for beans to never be refreshed or rebound.", "defaultValue": true + }, + { + "name": "spring.cloud.decrypt-environment-post-processor.enabled", + "type": "java.lang.Boolean", + "description": "Enable the DecryptEnvironmentPostProcessor.", + "defaultValue": true } ] } diff --git a/spring-cloud-context/src/test/java/org/springframework/cloud/bootstrap/encrypt/EncryptionIntegrationTests.java b/spring-cloud-context/src/test/java/org/springframework/cloud/bootstrap/encrypt/EncryptionIntegrationTests.java index 97d8e5b5..8b3d2a33 100644 --- a/spring-cloud-context/src/test/java/org/springframework/cloud/bootstrap/encrypt/EncryptionIntegrationTests.java +++ b/spring-cloud-context/src/test/java/org/springframework/cloud/bootstrap/encrypt/EncryptionIntegrationTests.java @@ -98,6 +98,16 @@ public class EncryptionIntegrationTests { then(context.getEnvironment().getProperty("foo.password")).isEqualTo("test"); } + @Test + public void decryptEnvironmentPostProcessorDisabled() { + ConfigurableApplicationContext context = new SpringApplicationBuilder(TestAutoConfiguration.class) + .web(WebApplicationType.NONE).properties("spring.config.use-legacy-processing=false", "encrypt.key:pie", + "spring.cloud.decrypt-environment-post-processor.enabled=false", + "foo.password:{cipher}bf29452295df354e6153c5b31b03ef23c70e55fba24299aa85c63438f1c43c95") + .run(); + then(context.getEnvironment().getProperty("foo.password")).startsWith("{cipher}bf2945"); + } + @Test public void symmetricConfigurationProperties() { ConfigurableApplicationContext context = new SpringApplicationBuilder(TestAutoConfiguration.class)