![](/img/trans.png)
[英]Unable to fetch secret value from Key Vault using system managed identity in C# Azure Function
[英]Azure App Service Container Managed Identity Key Vault in.NET Core C#
我有一个 C# 应用程序在 Azure 应用服务的 linux docker 容器中运行,它从 Azure Key Vault 获取它的配置信息。
过去我们是这样做的:
config.AddAzureKeyVault(builtConfig["Azure:Auth:Vault"],
builtConfig["Azure:Auth:ClientId"], builtConfig["Azure:Auth:ClientSecret"]);
相反,我们一直在尝试使用托管身份。 所以我:
从 nuget 添加了 AppAuthenication 库。
像这样更新我的代码:
var azureServiceTokenProvider = new AzureServiceTokenProvider(); var keyVaultClient = new KeyVaultClient( new KeyVaultClient.AuthenticationCallback( azureServiceTokenProvider.KeyVaultTokenCallback)); config.AddAzureKeyVault(builtConfig["Azure:Auth:Vault"], keyVaultClient, new DefaultKeyVaultSecretManager());
但是当我们通过更新容器将其放入 Azure 应用服务时,它只是在尝试启动应用程序时挂起。 什么也没有发生,最终它会超时。
我可以找到很多关于直接应用服务的文档,但容器没有什么不同。 然而,它似乎说它是受支持的。
在应用服务中为 linux 容器进行这项工作时,我缺少什么?
即使打开托管标识也会导致容器永远不会响应 ping 检查,更不用说正常启动了。
目前,这似乎不受支持。 我为验证此声明所做的工作:
使用系统分配的身份创建了两个实例:
部署完全相同的代码以通过 curl 获取令牌。
它在 VM 上按预期工作,但在自定义映像上不起作用。
遗憾的是,Azure 并未如宣传的那样在其托管服务上提供托管标识。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.