如何在 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。
我已经通过 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。