为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
万千封印 2023-05-14 16:40:35
我正在使用 Azure Key Vault 配置提供程序在应用程序启动时读取一些秘密。然而,秘密在一天中不断轮换,我希望能够在轮换发生时重新加载新值。我说的类似于reloadOnChangeapi.ConfigureAppConfiguration((context, config) =>{    config.AddJsonFile("appsettings.json", reloadOnChange: true);})这可能吗?这是一个 webapi 项目,所以在实践中,如果更好/更可行的话,我可以手动重新加载每个 HttpRequest 的值。
查看完整描述

3 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

使用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 机密将可用并根据您的重新加载间隔刷新。


查看完整回答
反对 回复 2023-05-14
?
互换的青春

TA贡献1797条经验 获得超6个赞

与 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)

    }

);

以及指向源代码的链接以查看其实际工作原理:)



查看完整回答
反对 回复 2023-05-14
?
守着一只汪

TA贡献1872条经验 获得超3个赞

秘密被缓存直到IConfigurationRoot.Reload()被调用。在执行重新加载之前,应用程序不会考虑密钥保管库中过期、禁用和更新的机密。

Configuration.Reload();


查看完整回答
反对 回复 2023-05-14
  • 3 回答
  • 0 关注
  • 125 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信