#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
не требуется (по умолчанию верно)