如何在 Azure Web 应用程序的本地开发中通过 IConfiguration 对象读取密钥保管库机密

How to read key vault secrets through IConfiguration object in local development in Azure web app

我已经通过 AzureServicesAuthConnectionString 环境变量为我的本地开发创建了一个服务主体,并授予该主体访问密钥库的权限。 但是,当我在密钥保管库中读取 configuration["secret"] 的秘密时,它为空,并且如果我检查配置对象中的提供程序,我看不到密钥保管库提供程序,只有 json 个提供程序用于我的应用程序设置文件。有没有我遗漏的步骤?

您可以尝试我们提供的新功能,直接将密码输入应用程序设置。

这是介绍如何设置的博客。它很简单,也可以通过模板部署工作。

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

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

在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();
 }

快照:

更多细节,你可以参考这个article