From 5b18e0ea7a832926affa20374e79383acb8e7641 Mon Sep 17 00:00:00 2001 From: Kamalakar Ponaka Date: Mon, 11 Jan 2021 16:19:31 -0600 Subject: [PATCH] CF Auth issue with Instance certificate issue expiry for 2.2.x (#1713) * Update PcfClientAuthenticationProvider.java Removing CF Cert Cache. https://github.com/spring-cloud/spring-cloud-config/issues/1693 * fix for 2.2.x Co-authored-by: Kamalakar Fixes gh-1693 --- .../PcfClientAuthenticationProvider.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/vault/authentication/PcfClientAuthenticationProvider.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/vault/authentication/PcfClientAuthenticationProvider.java index 71777ac4..6555b83c 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/vault/authentication/PcfClientAuthenticationProvider.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/vault/authentication/PcfClientAuthenticationProvider.java @@ -20,6 +20,7 @@ import org.springframework.cloud.config.server.environment.VaultEnvironmentPrope import org.springframework.cloud.config.server.environment.VaultEnvironmentProperties.AuthenticationMethod; import org.springframework.cloud.config.server.environment.vault.SpringVaultClientAuthenticationProvider; import org.springframework.util.Assert; +import org.springframework.util.StringUtils; import org.springframework.vault.authentication.ClientAuthentication; import org.springframework.vault.authentication.PcfAuthentication; import org.springframework.vault.authentication.PcfAuthenticationOptions; @@ -48,12 +49,32 @@ public class PcfClientAuthenticationProvider extends SpringVaultClientAuthentica if (pcfProperties.getInstanceCertificate() != null) { builder.instanceCertificate(new ResourceCredentialSupplier(pcfProperties.getInstanceCertificate())); } + else { + builder.instanceCertificate(new ResourceCredentialSupplier( + resolveEnvVariable("CF_INSTANCE_CERT"))); + } if (pcfProperties.getInstanceKey() != null) { builder.instanceKey(new ResourceCredentialSupplier(pcfProperties.getInstanceKey())); } + else { + builder.instanceKey(new ResourceCredentialSupplier( + resolveEnvVariable("CF_INSTANCE_KEY"))); + } return new PcfAuthentication(builder.build(), vaultRestOperations); } + private static String resolveEnvVariable(String name) { + + String value = System.getenv(name); + + if (StringUtils.isEmpty(value)) { + throw new IllegalStateException( + String.format("Environment variable %s not set", name)); + } + + return value; + } + }