如何从Configuration Builder中的Key Vault获取机密的价值

时间:2019-05-13 14:36:29

标签: c# connection-string azure-keyvault

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

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来更新密码。

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

谢谢 埃里克

2 个答案:

答案 0 :(得分:1)

为什么要在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;

有关更多详细信息,请参考此document

如果您仍然想在Configuration Builder中获得机密,则可以参考此sample

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"];
}

答案 1 :(得分:0)

This逐步完成(请确保您正在查看C#版本)。

一旦您像设置了东西一样设置了东西,文件库的秘密便成为应用程序配置的一部分。您需要在需要秘密的地方注入IConfiguration,并从中获取价值。