【发布时间】:2020-05-06 09:32:42
【问题描述】:
我在 docker 容器中运行使用来自 Azure 应用服务的 NET Core 3.1 的 Web API,并且努力从 Key Vault Service 获取密钥。 我的代码看起来不错,没有错误,但响应始终为空。这是我的启动初始化:
public Startup(IWebHostEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables();
this.bIsDevelopemnt = env.IsDevelopment();
Configuration = builder.Build();
var azureServiceTokenProvider = new AzureServiceTokenProvider();
KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
builder.AddAzureKeyVault(
$"https://{Configuration.GetSection("KeyVaultName").Value}.vault.azure.net/",
keyVaultClient,
new DefaultKeyVaultSecretManager());
}
我正在使用这个控制器来测试结果,在所有三种情况下都返回 null:
[HttpGet("/secrets")]
public IActionResult getSecrets()
{
try
{
var value = configuration["tokenKey"];
var value2 = configuration["OhmioAPI:tokenKey"];
var value3 = configuration["OhmioAPI--tokenKey"];
return Ok(new { orign = "pirulo", key1 = value, key2 = value2, key3 = value3 });
}
catch (Exception e) {
return NotFound(e.Message);
}
}
我尝试过/做过的事情: * 创建 Key Vault 存储和机密 * 为我的应用创建一个身份 ID * 添加权限以从密钥存储中获取/列出机密
有什么想法吗?
【问题讨论】:
-
假设您在 Linux 容器中运行?您是否在密钥保管库中明确授予托管标识获取权限?
-
是的,Simon,我正在 Linux 容器中运行我的应用程序,并且我已授予对保管库的获取权限。谢谢
标签: azure docker .net-core azure-keyvault