NET Core C#中的Azure应用服务容器托管的身份密钥库

Jam*_*ock 6 c# containers azure-web-sites docker

我在Azure App Services的linux docker容器中运行了一个C#应用程序,该程序从Azure Key保管库获取其配置信息。

过去我们这样做:

config.AddAzureKeyVault(builtConfig["Azure:Auth:Vault"],
    builtConfig["Azure:Auth:ClientId"], builtConfig["Azure:Auth:ClientSecret"]);
Run Code Online (Sandbox Code Playgroud)

我们一直在尝试使用托管身份。所以我:

  1. 何时在应用程序服务上标识,然后单击系统标识上的启用,然后单击保存。
  2. 进入天蓝色的密钥仓库,并在3个区域为其添加,获取,列出,解密和解包应用程序服务的系统标识,就像我们为使用VS.net身份验证的用户所做的一样。
  3. 从nuget添加了AppAuthenication库。

  4. 这样更新我的代码:

    var azureServiceTokenProvider = new AzureServiceTokenProvider();
    var keyVaultClient = new KeyVaultClient(
        new KeyVaultClient.AuthenticationCallback(
            azureServiceTokenProvider.KeyVaultTokenCallback));
    config.AddAzureKeyVault(builtConfig["Azure:Auth:Vault"], keyVaultClient, 
        new DefaultKeyVaultSecretManager());
    
    Run Code Online (Sandbox Code Playgroud)

但是,当我们通过更新容器将其放入Azure App Services时,它挂起并试图启动应用程序。没有任何反应,最终超时。

我可以找到许多有关直接应用程序服务的文档,但是对于容器来说没有什么不同。看来它受到支持。

在App Services中使linux容器能够正常工作时,我缺少什么?

即使打开托管身份,也会导致容器从不响应ping检查,更不用说正确启动了。

Jor*_*tao 1

目前这似乎不受支持。我做了什么来验证这个声明:

  1. 创建了两个具有系统分配标识的实例:

    • 虚拟机
    • 具有自定义图像的应用程序服务
  2. 部署相同的代码以通过curl获取令牌

它在虚拟机上按预期工作,但在自定义映像上不起作用。

不幸的是,Azure 并未像宣传的那样在其托管服务上提供托管身份。