spring - 在使用 Spring Boot EnvironmentPostProcessor 加载 application.yml 之前获取 Azure Key Vault 值
问题描述
我需要在加载配置(application.yml)之前从密钥库中获取一个值,因为该密钥用于解密配置文件中的敏感值。
从 EnvironmentPostProcessor 访问 Azure 密钥保管库时,它将显示如下错误消息。但是在其他过程(不是后处理器)中,它可以成功访问。
javax.naming.ServiceUnavailableException:身份验证结果为空
下面是 EnvironmentPostProcessor 中的代码。
public class LocalSettingsEnvironmentPostProcessor implements EnvironmentPostProcessor {
protected static final Logger LOGGER = LoggerFactory.getLogger(LocalSettingsEnvironmentPostProcessor.class);
private String keyVaultName = "......";
private String tenantId = "......";
private String clientId = "......";
private String clientKey = "......";
private String keyName = "......";
private String keyVersion = "......";
@Override
public void postProcessEnvironment(ConfigurableEnvironment configurableEnvironment, SpringApplication springApplication) {
MutablePropertySources propertySources = configurableEnvironment.getPropertySources();
String baseUrl = "https://" + keyVaultName + ".vault.azure.cn:{port}/secrets/";
String url = baseUrl + keyName + "/" + keyVersion;
try {
Properties properties = new Properties();
LOGGER.info("postProcessor get key from keyvault: ", KeyVaultClient.getInstance().getKeyVal(clientId, clientKey, tenantId, url));
properties.setProperty("jasypt.encryptor.password", KeyVaultClient.getInstance().getKeyVal(clientId, clientKey, tenantId, url));
propertySources.addFirst(new PropertiesPropertySource("Config", properties));
return;
} catch (Exception e) {
LOGGER.error("postProcessEnvironment error:", e);
System.exit(0);
}
}
}
还是有另一种方法可以在加载配置之前从密钥库中获取值?
解决方案
推荐阅读
- android - 单击以在没有电话号码的whatsapp api上发送消息
- authentication - OpenID Connect 服务器是否应该提供两次相同的令牌?
- c# - 列的自动宽度和标题的自动换行在 OpenXML Excel 中不起作用
- python - 是否可以在 python 的列表理解中使用多个条件?
- java - 如何从android java中的通知中读取whatsapp消息的时间?
- apache-spark - 如何在 AWS 数据块上设置 spark.task.maxFailures?
- android - onNmeaMessage 中未收到“GPGGA”和“GPRMC”语句
- excel - VBA遍历工作簿和工作表名称并复制到主控表中的现有工作表名称
- r - selectInput无故重置
- javascript - 重新排序数组中的元素(移到最后,移到第一个,重新排序) - JS