簡體   English   中英

無法從 Azure Service Fabric 應用程序讀取 Azure Key Vault 中的機密

[英]Unable to read secret from Azure Key Vault from Azure Service Fabric App

我正在嘗試從 Service Fabric 應用程序讀取來自 Azure KeyVault 的機密。 當我在 Visual Studio 中運行時,ServiceFabric 似乎沒有利用我在 Visual Studio 中的 Azure AD 帳戶進行身份驗證。 嘗試使用環境變量或托管標識失敗。 在 Service Fabric 應用程序中是否應該采用不同的方式來完成此操作?

   var builder = new ConfigurationBuilder()
          .SetBasePath(_Environment.ContentRootPath)
          .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
          .AddJsonFile($"appsettings.{envName}.json", optional: true, reloadOnChange: true)
          .AddEnvironmentVariables();


    var keyValutName = Configuration["KeyVaultName"];
    builder.AddAzureKeyVault(
          new SecretClient(
             new Uri($"https://{keyValutName}.vault.azure.net/"),
             new DefaultAzureCredential()),
          new AzureKeyVaultConfigurationOptions()
        );

    Configuration = builder.Build();

我收到以下錯誤消息:

Azure.Identity.CredentialUnavailableException: 'DefaultAzureCredential 無法從包含的憑據中檢索令牌。 有關詳細信息,請參閱故障排除指南。 https://aka.ms/azsdk/net/identity/defaultazurecredential/troubleshoot

  • EnvironmentCredential 身份驗證不可用。

環境變量沒有完全配置。 有關詳細信息,請參閱故障排除指南。 https://aka.ms/azsdk/net/identity/environmentcredential/troubleshoot

  • ManagedIdentityCredential 身份驗證不可用。 請求的標識尚未分配給此資源。

狀態:400(錯誤請求)

我們可以使用ApplicationManifest.xml從 Azure Service Fabric App 編寫鍵值並添加 Azure Key Vault 的秘密

在此處輸入圖像描述

<Parameters>
    <Parameter Name="KeyVault" DefaultValue="Somekey" />
    <Parameter Name="CertificateName" DefaultValue="TestCertificate" />
  </Parameters>

在此處輸入圖像描述

由於 ApplicationManifest.xml 是一個 xml 文件,因此我們可以使用 LinQ 查詢並讀取 xml 文件。 下面是相同的代碼片段。

var xml_doc = XDocument.Load("Path");
var parms = xml_doc.Descendants("Parameter").Select(c => (string)c).ToArray();

下面是從 ApplicationManifest.xml 中獲取參數的代碼。

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM