首页 > 解决方案 > 如何从 Configuration Builder 中的 Key Vault 获取密钥的值

问题描述

我已经关注了一些文档。因此,设置配置生成器,我添加了以下代码:

AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
builder.AddAzureKeyVault($"https://{Configuration.GetSection("Azure")["KeyVaultName"]}.vault.azure.net/", keyVaultClient, new DefaultKeyVaultSecretManager());

现在,我正在尝试从存储在保险库中的命名机密中获取值。

我以为我可以像这样把它拉出来:

builder.getSecret('DevDbPassword');

这样我就可以使用 SqlConnectionStringBuilder 来更新密码。

有人可以帮助弄清楚如何获得秘密吗?

谢谢埃里克

标签: c#azureconnection-stringazure-keyvault

解决方案


为什么要在 Configuration Builder 中获取秘密?您可以通过以下方式获取秘密:

     AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
     KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
     var secret = await keyVaultClient.GetSecretAsync("https://<YourKeyVaultName>.vault.azure.net/secrets/AppSecret")
             .ConfigureAwait(false);
     Message = secret.Value;

有关详细信息,请参阅此文档

如果您仍想在 Configuration Builder 中获取 secret,可以参考此示例

public string Message { get; set; }

public AboutModel(IConfiguration configuration)
{
    _configuration = configuration;
}

private readonly IConfiguration _configuration = null;

public void OnGet()
{
    Message = "My key val = " + _configuration["AppSecret"];
}

推荐阅读