Azure KeyVault配置提供程序在更改时重新加载值

时间:2019-06-29 01:44:01

标签: c# .net azure asp.net-core azure-keyvault

我正在使用Azure Key Vault配置提供程序在应用启动时读取一些机密。然而,秘密全天都在轮换,我希望能够在轮换发生时重新加载新值。

我在说什么类似于reloadOnChange api

.ConfigureAppConfiguration((context, config) =>
{
    config.AddJsonFile("appsettings.json", reloadOnChange: true);
})

这有可能吗?

这是一个webapi项目,因此在实践中,如果这样做更好/更容易实现,我可以手动为每个HttpRequest重新加载值。

2 个答案:

答案 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