我正在使用Azure Key Vault配置提供程序在应用启动时读取一些机密。然而,秘密全天都在轮换,我希望能够在轮换发生时重新加载新值。
我在说什么类似于reloadOnChange
api
.ConfigureAppConfiguration((context, config) =>
{
config.AddJsonFile("appsettings.json", reloadOnChange: true);
})
这有可能吗?
这是一个webapi项目,因此在实践中,如果这样做更好/更容易实现,我可以手动为每个HttpRequest重新加载值。
答案 0 :(得分:8)
使用Microsoft.Extensions.Configuration.AzureKeyVault (v3),您可以执行以下操作:
CJSON_PUBLIC(void) cJSON_Delete(cJSON *item)
{
cJSON *next = NULL;
while (item != NULL)
{
...
}
}
现在,当您在服务中请求configurationBuilder.AddAzureKeyVault(new AzureKeyVaultConfigurationOptions
{
Vault = configuration["KeyVaultUrl"],
ReloadInterval = TimeSpan.FromMinutes(10),
Client = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(
new AzureServiceTokenProvider().KeyVaultTokenCallback))
});
时,KeyVault机密将可用并根据您的重新加载间隔刷新。
答案 1 :(得分:1)
秘密被缓存,直到调用IConfigurationRoot.Reload()
为止。在执行重新加载之前,应用程序将不考虑密钥库中已过期,已禁用和已更新的机密。
Configuration.Reload();
有关更多详细信息,您可以参考此article。