如何从Azure密钥库获取所有机密,然后使用ASP.Net核心加载到配置对象中
我正在努力将Azure密钥库集成到ASP.NETCore 2.1 Azure WebJob中。为此,我尝试为WebJob使用以下代码。 .NetCore WebJob:Program.cs如何从Azure密钥库获取所有机密,然后使用ASP.Net核心加载到配置对象中,azure,asp.net-core,asp.net-core-2.1,azure-keyvault,Azure,Asp.net Core,Asp.net Core 2.1,Azure Keyvault,我正在努力将Azure密钥库集成到ASP.NETCore 2.1 Azure WebJob中。为此,我尝试为WebJob使用以下代码。 .NetCore WebJob:Program.cs private static IConfiguration GetConfiguration(ServiceCollection services) { var environment = Environment.GetEnvironmentVariable("ASPN
private static IConfiguration GetConfiguration(ServiceCollection services)
{
var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
// build config
var configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{environment}.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
var keyVault = configuration.GetSection("KeyVault");
configuration.AddAzureKeyVault(
$"https://{keyVault["Vault"]}.vault.azure.net/",
keyVault["ClientId"],
keyVault["ClientSecret"]);
return configuration;
}
但我得到了以下错误:
IConfigurationBuilder不包含AddAzureKeyVault的定义
我使用了以下NuGet软件包:
<PackageReference Include="Microsoft.Azure.KeyVault" Version="2.3.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="2.1.1" />
如果要在web作业中使用Azure key vault,请参考以下代码
你提到了吗?是的,我提到了那个链接。它只包含WebAPI的代码,但不包含.netcore webjob的代码。您是否在Azure web job中收到错误?是的,我在Azure webjob中收到错误
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions" Version="3.0.6" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Storage" Version="3.0.10" />
<PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="2.1.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.1.0" />
</ItemGroup>
<ItemGroup>
<None Update="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
class Program
{
static async Task Main()
{
var builder = new HostBuilder();
builder.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
b.AddAzureStorage();
});
builder.ConfigureLogging((context, b) =>
{
b.AddConsole();
});
var host = builder.Build();
using (host)
{
await host.RunAsync();
}
}
}
public class Functions
{
public static void ProcessQueueMessage([QueueTrigger("queue")] string message, ILogger logger)
{
// create IConfigurationRoot to read appsetting.json
IConfigurationRoot configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.Build();
// create IConfigurationRoot to read Azure key vault
IConfigurationRoot config = new ConfigurationBuilder()
.AddAzureKeyVault(
$"https://{configuration["KeyVaultName"]}.vault.azure.net/",
configuration["AzureADApplicationId"],
configuration["AzureADCert"],
new DefaultKeyVaultSecretManager())
.Build();
// read one secret in Azure key vault
var str = config["hurysecret"];
logger.LogInformation(message + "\n str: " +str);
}
}