如何在Azure Web应用程序的本地开发中通过IConfiguration对象读取关键文件库机密

时间:2019-04-11 17:20:03

标签: azure azure-web-sites azure-web-app-service azure-keyvault

我已经通过AzureServicesAuthConnectionString环境变量为本地开发创建了服务主体,并授予了该主体对密钥库的访问权限。 但是,当我读取configuration["secret"]中密钥库的机密时,它为null,并且如果我检查配置对象中的提供程序,则看不到密钥库提供程序,仅看到我的appsettings文件的json提供程序。我缺少一个步骤吗?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用我们必须将机密直接注入“应用程序设置”中的新功能。

这里是展示如何设置的博客。这很容易,也可以通过模板部署来工作。

https://docs.microsoft.com/en-us/azure/app-service/app-service-key-vault-references

答案 1 :(得分:0)

我创建了一个.net核心网络应用,并在我的网站中进行了良好的测试。这是您可以参考的代码。

在Program.cs中:

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration(builder =>
        {
            var azureServiceTokenProvider = new AzureServiceTokenProvider();
            var keyVaultClient =new KeyVaultClient(
                new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
                builder.AddAzureKeyVault("https://yourkeyvaultname.vault.azure.net/",
                keyVaultClient, new DefaultKeyVaultSecretManager());
        })
        .UseStartup<Startup>();

在HomeController.cs中:

 private readonly IConfiguration _configuration;
 public HomeController(IConfiguration configuration)
 {
     _configuration = configuration;
 }
 public IActionResult Index()
 {
     ViewBag.Secret = _configuration["yoursecretname"];
     return View();
 }

快照:

enter image description here

有关更多详细信息,您可以参考此article