Azure KeyVault Get Secret API отвечает с ошибкой 404 или 401

Я пытаюсь получить секрет из Azure Key Vault. Это очень простой вызов Restful API. Например, для всех ключей это так просто:

GET {vaultBaseUrl}/secrets?api-version=7.0

где vaultBaseUrl предоставляется в консоли Azure как DNS-имя хранилища. Я использую режим консоли для тестирования https://docs.microsoft.com/en-us/rest/api/keyvault/getsecrets/getsecrets#code-try-0 Но возвращаемое значение, если всегда 404. Когда я пытаюсь выполнить curl в консоли Azure, он дает 401 - Несанкционированный. Однако я могу использовать командную строку, чтобы узнать секрет. Есть ли какой-нибудь секрет в том, чтобы успокаивающий зов и завитки работали, чтобы раскрыть секрет? Во всех этих ситуациях используются одни и те же учетные данные. Побочные вопросы заключаются в том, что на странице тестирования api micorosft есть раздел «Предварительный просмотр запроса» с зеленой кнопкой «Выполнить», почти как если бы он приглашал вас запустить api, но ссылка ведет на docs.microsoft.com и кнопка копирования на коробке неактивна. Я никогда не видел столько проблем в одном месте, поэтому думаю, что, может быть, я чего-то здесь не понимаю.


person Tauqir    schedule 26.04.2019    source источник


Ответы (2)


Документ кажется неправильным. Если вы хотите получить секрет, вы можете использовать поток учетных данных клиента, чтобы получить токен доступа и использовать его для получения секрета.

Следуйте инструкциям ниже.

1. Зарегистрируйте приложение в Azure Active Directory, см. ссылка. Получите идентификатор и ключ приложения, см. ссылка. Добавьте субъект-службу в Access policies хранилища ключей с правильным секретным разрешением (просто найдите имя своего приложения AD и добавьте его).

2. В почтальоне отправьте запрос на урл

POST https://login.microsoftonline.com/{your tenant id}/oauth2/token?api-version=1.0

Тело запроса и полный образец (client_id и client_secret - это идентификатор и ключ приложения на шаге 1):

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

3. Скопируйте access_token на шаге 2, затем используйте его как токен авторизации для вызова API:

GET https://yourkeyvault.vault.azure.net/secrets?api-version=7.0

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

Кроме того, если вы хотите использовать CURL для получения секрета, попробуйте следующий вариант. TOKEN совпадает с access_token на шаге 2 выше.

curl -X GET -H "Authorization: Bearer [TOKEN]" https://yourkeyvault.vault.azure.net/secrets?api-version=7.0

Для получения дополнительных сведений о получении access_token с помощью curl и выполнения шагов вы можете обратиться к этому ссылка. Не забудьте изменить resource на https://vault.azure.net на этапе Запросить токен доступа.

person Joy Wang    schedule 26.04.2019

Передайте токен на предъявителя. Будет URL-адрес для создания токена и передачи его для аутентификации, тогда вы не получите ошибку.

person Pravin    schedule 07.08.2020