Ошибки аутентификации Azure Key Vault 401
Я извлекаю секретные значения из хранилища ключей для своего приложения Azure Service Fabric без учета состояния и получаю 401 ошибок зависимостей (если я проверяю через понимание подключенного приложения) только для 2 секретных ключей хранилища из секретных хранилищ ключей 100 с. Ниже приведен скриншот ошибки зависимости, который отображается в приложении для одного из секретов хранилища ключей.
Здесь путь запроса: https://mykeyvaultname.vault.azure.net/secrets/PushMessagingSecretsTopicName/?api-version=7.0
Мой код для получения секрета хранилища ключей приведен ниже:
public async Task<string> GetSecretAsync(string secretName, string clientId, string appKey, string vaultAddress)
{
string secretValue = string.Empty;
if (string.IsNullOrEmpty(secretName))
throw new ArgumentNullException(nameof(secretName));
if (string.IsNullOrEmpty(clientId))
throw new ArgumentNullException(nameof(clientId));
if (string.IsNullOrEmpty(appKey))
throw new ArgumentNullException(nameof(appKey));
if (string.IsNullOrEmpty(vaultAddress))
throw new ArgumentNullException(nameof(vaultAddress));
var secretIdentifier = vaultAddress + "secrets/" + secretName;
string cacheKey = secretIdentifier + clientId + appKey;
secretValue = await GetSecretValue(clientId, appKey, secretIdentifier, cacheKey);
return secretValue;
}
private async Task<string> GetSecretValue(string clientId, string appKey, string secretIdentifier, string cacheKey)
{
IAdAuthentication authToken = new AdAuthentication
{
ClientId = clientId,
AppKey = appKey
};
KeyVaultClient keyVaultClient = new KeyVaultClient(authToken.GetAuthenticationTokenAsync);
// Get secret from the KeyVault.
SecretBundle secret = null;
Task tskGetSecret = Task.Run(async () =>
{
//Here I am getting exception with response
secret = await keyVaultClient.GetSecretAsync(secretIdentifier).ConfigureAwait(false);
});
await Task.WhenAny(tskGetSecret);
if (tskGetSecret.IsFaulted || tskGetSecret.IsCanceled)
{
secret = null;
}
string secretValue = string.Empty;
if (secret != null && secret.Value != null)
{
secretValue = secret.Value.Trim();
}
return secretValue;
}
Я отладил проблему дальше и ниже дано мое
Исключение происходит во время получения значения конкретного keyVaultSecret.
Наряду с исключением, значение секрета также извлекается успешно.
Исключение составляет:
Microsoft.Rest.TransientFaultHandling.HttpRequestWithStatusException: 'Response status code indicates server error: 401 (Unauthorized).'
Трассировки стека:-
at Microsoft.Rest.RetryDelegatingHandler.<>c__DisplayClass11_0.<<SendAsync>b__1>d.MoveNext()
1 ответ
Я закрываю эту проблему, так как при дальнейшей отладке я обнаружил, что проблема не является прерывистой и не связана с конкретными секретами хранилища ключей. Проблема всегда возникает при получении значения первого секретного ключа хранилища для приложения. Я закрываю этот выпуск и открыл новый выпуск с соответствующими деталями.