【发布时间】:2020-03-30 04:31:50
【问题描述】:
我正在尝试从 Azure Key Vault 检索机密(不使用凭据,如本教程中:example):
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”。
【问题讨论】:
-
GetClient() 函数中有一个
using。这意味着客户端在返回之前已被处理。将 using 放在使用客户端的代码中,而不是 GetClient() 函数中。 -
@juunas 哇,我很愚蠢。请随意回答问题,以便我投票。
标签: c# azure azure-keyvault