Spring Vault возвращает значение null

#java #spring #spring-boot #spring-vault

Вопрос:

Я очень новичок в Spring Vault, и поэтому я следил за множеством руководств и видео на YouTube. Проблема, с которой я сталкиваюсь, заключается в том, что я думаю, что могу получить доступ к хранилищу, но когда я пытаюсь извлечь значения из хранилища, оно возвращает для меня значение null.

Итак, в моем приложении Spring Boot мой основной метод spring (SpringApp.java) это:

 import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;

import com.SpringApp.config.VaultConfig;

@SpringBootApplication
@EnableConfigurationProperties(VaultConfig.class)
public class SpringApp implements CommandLineRunner{
    
    private static Logger log = LoggerFactory.getLogger(SpringApp.class);
    private VaultConfig vaultConfig;
    
    public SpringApp (VaultConfig vaultConfig) {
        super();
        this.vaultConfig = vaultConfig;
    }

    public static void main(String[] args) {
        SpringApplication.run(SpringApp.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        log.info("----------------------------------------");
        log.info("Configuration properties");
        log.info("   the secret key for jwt is {}", vaultConfig.getJwt());
        log.info("----------------------------------------");
        
    }
}
 

Мой VaultConfig.java неужели это:

 import org.springframework.boot.context.properties.ConfigurationProperties;

import lombok.Data;

@Data
@ConfigurationProperties("secret")
public class VaultConfig {
    private String jwt;
}
 

Когда я выполняю команду

 vault server --dev --dev-root-token-id="00000000-0000-0000-0000-000000000000"
 

Я смог запустить свой сервер хранилища, и когда я выполняю команду

 vault kv put secret/spring-vault-config secret.jwt=123456789
 

Мне удалось зарегистрировать секрет в хранилище, и я проверил как пользовательский интерфейс, так и командную строку, и значение там есть

 localhost:8200
and
vault kv get secret/spring-vault-config
 

Однако, когда я запускаю приложение spring boot, я получаю

 the secret key for jwt is null
 

Сначала у меня есть все свойства в файлах «bootstrap.properties», но я продолжаю получать сообщение об ошибке

 "spring.cloud.vault.token" (Must not be empty) 
 

Поэтому я изменил все эти свойства в «application.properties», и это сработало

Но теперь по какой-то причине я не могу его восстановить, любая помощь с предложением будет очень признательна. Заранее благодарю вас.

О, вот что в моем файле application.properties

 spring.application.name=spring-vault-config
spring.cloud.vault.token=00000000-0000-0000-0000-000000000000
spring.cloud.vault.scheme=http
spring.cloud.vault.kv.enabled=true
 

Комментарии:

1. Можете ли вы попробовать добавить spring.config.import=vault:// ? У меня была та же проблема, и теперь она работает на меня. spring.cloud.vault.kv.enabled не требуется (по умолчанию верно)