[英]C# Can't retrieve secret from Azure Key Vault
我正在嘗試從 Azure Key Vault 檢索機密(不使用憑據,如本教程中所示: 示例):
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 語句,所以 KeyVaultClient 會在函數返回后立即被釋放。 刪除 using 並將其移動到您使用客戶端的位置。
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;
}
}
我在我的網站上進行了測試,您提供的代碼幾乎是正確的。 確保您已在創建密鑰保管庫的 Visual Studio 中登錄您的帳戶。
並在代碼中刪除using
並安裝nuget 。
private static KeyVaultClient GetClient()
{
AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
return keyVaultClient;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.