当前位置: 首页 > 知识库问答 >
问题:

C#无法从Azure密钥库中检索机密

郎飞龙
2023-03-14

我试图从Azure密钥库中检索一个秘密(不使用凭据,如本教程:示例):

public static async Task<string> GetSecret(string secretName)
{
   try
   {
       return (await GetClient().GetSecretAsync(keyVaultUrl, secretName)).Value;
   }
   catch (KeyVaultErrorException)
   {
      return null;
   }
   catch (Exception ex)
   {
      return null;
   }
}

public static async Task<string> GetAccessTokenAsync()
{
    AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
    return await azureServiceTokenProvider.GetAccessTokenAsync("https://vault.azure.net");
}

private static KeyVaultClient GetClient()
{
   AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
   using KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
   return keyVaultClient;
}

但是当我调用getSecret()时,我得到一个

我的密钥库url的格式类似于“https://my-keyvault.vault.azure.net”。

共有1个答案

邹坚壁
2023-03-14

因为在getclient函数中有一个using语句,所以在函数返回时立即释放KeyVaultClient。删除using there并将其移动到您使用客户端的位置。

private static KeyVaultClient GetClient()
{
   AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
   KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
   return keyVaultClient;
}
public static async Task<string> GetSecret(string secretName)
{
   try
   {
       using var client = GetClient();
       return (await client.GetSecretAsync(keyVaultUrl, secretName)).Value;
   }
   catch (KeyVaultErrorException)
   {
      return null;
   }
   catch (Exception ex)
   {
      return null;
   }
}
 类似资料:
  • 我无法从azure key vault检索到运行在azure windows VM中的.NET控制台应用程序的秘密。下面是我使用过的代码,我已经给了服务主体在密钥库中的所有权限。

  • 如何从reactjs应用程序中的azure密钥库中获取密钥?我在下面的标题中传递我的秘密密钥 如何从azure密钥库中获取“subscription-key”值?我在azure密钥库中添加了订阅密钥值。

  • 我创建了一个密钥库,它包括私钥和公钥。我需要使用java代码检索我的公钥和私钥。我在这里找到了一个检索私钥的方法。但我找不到检索公钥的方法。有人能告诉我一种取出公钥的方法吗

  • 我试图安全地从azure中检索凭据,而不必在本地保存Cred,这已经证明比我最初想象的要困难。

  • 我正在尝试使用Azure Key Vault克里特一个“秘密值”。我正在学习Microsoft的教程,网址是:https://azure.Microsoft.com/en-us/documentation/articles/key-vault-get-started/ 我用... 我也可以验证它是通过使用... 我以为通过创建它,我已经获得了进入密钥库的所有权限?我需要添加特定权限吗?