SecretClient.GetSecret всегда выдает ошибку 400

#azure #azure-keyvault

#azure #azure-keyvault

Вопрос:

Я пытаюсь перейти от старого «Microsoft.Azure.KeyValut» пакет для нового «Azure.Безопасность.KeyVault.Секреты»

Я могу перечислить все свои секреты, но в тот момент, когда я пытаюсь получить секретное значение, я получаю и ошибку состояния 400 Http:

Azure.Исключение RequestFailedException: «Ошибка запроса на обслуживание. Статус: 400 (неверный запрос)

Содержимое: {«ошибка»:{«код»:»BadParameter»,»сообщение»:»Метод GET не разрешает операцию ‘ChilkatUnlock'»}}

 internal SecretClient GetClient() {
            var client = new SecretClient(new Uri(cKvUri), new ClientSecretCredential(cAzureTennantId, cAzureClientId, cAzureClientSecret));
            return client;
}

internal void ListSecrets() {
            var client = GetClient();
            

            Pageable<SecretProperties> allSecrets = client.GetPropertiesOfSecrets();

            foreach (SecretProperties secretProperties in allSecrets) {
                Console.WriteLine(secretProperties.Name);
                var val = client.GetSecret(secretProperties.Name);
                Console.WriteLine(val.Value);
            }
        }
  

Ответ №1:

Я пытаюсь использовать код в вашей проблеме, и он возвращает секреты без ошибок. Пожалуйста, проверьте свой ChilkatUnlock метод. Наконец-то я разделяю политики доступа.

 var client = new SecretClient(new Uri(cKvUri), new ClientSecretCredential(cAzureTennantId, cAzureClientId, cAzureClientSecret));

Pageable<SecretProperties> allSecrets = client.GetPropertiesOfSecrets();

foreach (SecretProperties secretProperties in allSecrets)
{
     Console.WriteLine("Secret: "   secretProperties.Name);
     var val = client.GetSecret(secretProperties.Name);
     Console.WriteLine("Value: "   val.Value);
}
  

введите описание изображения здесь

Политики доступа:

введите описание изображения здесь

Комментарии:

1. Оказалось, что мой Uri keyvault был неправильным. Она содержится /secrets/ в конце. Это работало в устаревшей версии «Microsoft. Azure. KeyVault» но не в новой версии.

2. Для получения дополнительной информации формат uri как https://{vault-name}.vault.azure.net/ . И пример здесь .