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

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


我说的类似于reloadOnChangeapi


.ConfigureAppConfiguration((context, config) =>

{

    config.AddJsonFile("appsettings.json", reloadOnChange: true);

})

这可能吗?


这是一个 webapi 项目,所以在实践中,如果更好/更可行的话,我可以手动重新加载每个 HttpRequest 的值。


万千封印
浏览 157回答 3
3回答

catspeake

使用Microsoft.Extensions.Configuration.AzureKeyVault (v3),您可以执行以下操作:configurationBuilder.AddAzureKeyVault(new AzureKeyVaultConfigurationOptions{    Vault = configuration["KeyVaultUrl"],    ReloadInterval = TimeSpan.FromMinutes(10),    Client = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(       new AzureServiceTokenProvider().KeyVaultTokenCallback))});现在,当您在您的服务中请求时IConfiguration,KeyVault 机密将可用并根据您的重新加载间隔刷新。

互换的青春

与 Bobby Koteski 提议的相同,但使用更新的Azure.Extensions.AspNetCore.Configuration.Secrets包,因为Microsoft.Extensions.Configuration.AzureKeyVault已弃用。ReloadInterval是在尝试轮询 Azure Key Vault 以获取更改之间等待的时间。configurationBuilder.AddAzureKeyVault(    new SecretClient(        new Uri(configuration["KeyVaultBaseUrl"]),        new ManagedIdentityCredential(configuration["UserAssignedManagedIdentityClientId"])    ),    new AzureKeyVaultConfigurationOptions()    {        ReloadInterval = TimeSpan.FromSeconds(1000)    });以及指向源代码的链接以查看其实际工作原理:)

守着一只汪

秘密被缓存直到IConfigurationRoot.Reload()被调用。在执行重新加载之前,应用程序不会考虑密钥保管库中过期、禁用和更新的机密。Configuration.Reload();
打开App,查看更多内容
随时随地看视频慕课网APP