Guard Config Data registration against absent SessionManager.
If the session manager is absent, we no not attemp to look it up. That is the case if no authentication is configured. Closes gh-705
This commit is contained in:
@@ -252,7 +252,8 @@ public class VaultConfigDataLoader implements ConfigDataLoader<VaultConfigLocati
|
||||
VaultConfiguration vaultConfiguration) {
|
||||
registerIfAbsent(bootstrap, "secretLeaseContainer", SecretLeaseContainer.class, ctx -> {
|
||||
|
||||
SessionManager sessionManager = ctx.get(SessionManager.class);
|
||||
SessionManager sessionManager = ctx.isRegistered(SessionManager.class) ? ctx.get(SessionManager.class)
|
||||
: null;
|
||||
SecretLeaseContainer container = vaultConfiguration.createSecretLeaseContainer(ctx.get(VaultTemplate.class),
|
||||
() -> ctx.get(TaskSchedulerWrapper.class).getTaskScheduler(), sessionManager);
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@ import java.util.function.Supplier;
|
||||
import org.springframework.cloud.client.ServiceInstance;
|
||||
import org.springframework.cloud.vault.config.VaultProperties.Ssl;
|
||||
import org.springframework.http.client.ClientHttpRequestFactory;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.scheduling.TaskScheduler;
|
||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
|
||||
import org.springframework.util.StringUtils;
|
||||
@@ -182,7 +183,7 @@ final class VaultConfiguration {
|
||||
}
|
||||
|
||||
SecretLeaseContainer createSecretLeaseContainer(VaultOperations vaultOperations,
|
||||
Supplier<TaskScheduler> taskSchedulerSupplier, SessionManager sessionManager) {
|
||||
Supplier<TaskScheduler> taskSchedulerSupplier, @Nullable SessionManager sessionManager) {
|
||||
|
||||
VaultProperties.ConfigLifecycle lifecycle = this.vaultProperties.getConfig().getLifecycle();
|
||||
|
||||
|
||||
@@ -63,6 +63,21 @@ public class VaultConfigDataLoaderIntegrationTests extends IntegrationTestSuppor
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldConsiderNoAuthentication() {
|
||||
|
||||
SpringApplication application = new SpringApplication(Config.class);
|
||||
application.setWebApplicationType(WebApplicationType.NONE);
|
||||
|
||||
try (ConfigurableApplicationContext context = application.run("--spring.application.name=my-config-loader",
|
||||
"--spring.config.import=vault:", "--spring.cloud.vault.authentication=NONE")) {
|
||||
|
||||
// while the Vault startup leads to Status 403 Forbidden [secret/application],
|
||||
// we expect that the application can still boot up.
|
||||
assertThat(context).isNotNull();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void vaultLocationEndingWithSlashShouldFail() {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user