Ошибки аутентификации 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;
        }

Я отладил проблему дальше и ниже дано мое

  1. Исключение происходит во время получения значения конкретного keyVaultSecret.

  2. Наряду с исключением, значение секрета также извлекается успешно.

  3. Исключение составляет: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 ответ

Я закрываю эту проблему, так как при дальнейшей отладке я обнаружил, что проблема не является прерывистой и не связана с конкретными секретами хранилища ключей. Проблема всегда возникает при получении значения первого секретного ключа хранилища для приложения. Я закрываю этот выпуск и открыл новый выпуск с соответствующими деталями.

Другие вопросы по тегам