【发布时间】:2021-08-09 01:20:32
【问题描述】:
我正在尝试从 ASP.net 5 Web API 应用程序中的 Azure Key Vault 获取值。但是面临这个问题。
我已经在 Program.cs 文件中添加了这段代码
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.ConfigureAppConfiguration((context, config) =>
{
var builtConfig = config.Build();
var vaultName = builtConfig["keyvault"];
var keyVaultClient = new KeyVaultClient(
async (authoriy, resource, scope) =>
{
var credential = new DefaultAzureCredential(false);
var token = credential.GetToken(
new TokenRequestContext(
new[] {"https://vault.azure.net/.default" }
)
);
return token.Token;
});
config.AddAzureKeyVault(
vaultName,
keyVaultClient,
new DefaultKeyVaultSecretManager());
});
在 appsettings.json 文件中,我给出了这样的密钥库 URL。
"Keyvault": "https://<<vaultName>>.vault.azure.net/.default"
我已经创建了名为“StorageConnectionString”的秘密,我在 Azure Key-vault 的班级中使用。
public BlobContainerProvider(IConfiguration configuration)
{
string connectionString = configuration.GetValue<string>("StorageConnectionString");
blobServiceClient = new BlobServiceClient(connectionString);
}
提前致谢。
【问题讨论】:
-
您确定您在密钥保管库中有 nae
StorageConnectionString的秘密吗? -
我很想直接实施并使用Key Vault References - 请注意,这不是答案,而是对另一种解决方案的建议。
-
你为什么要这样做:
"EventStoreKeyvault": "https://<<vaultName>>.vault.azure.net/.default"? -
@blockingHD,是的,这是个好建议。但它不符合托管身份。
标签: azure asp.net-core azure-keyvault .net-5 asp.net5