Проверка подлинности Keyvault (REST API)

Меня немного смущает разрозненная документация Microsoft.

Я создал приложение (https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal), что означает, что теперь у меня есть:

  • ID приложения
  • Ключ
  • ID каталога

Я вошел в KeyVault на портале Azure и предоставил приложению разрешения.

В целях тестирования я пытаюсь запустить тест через CURL. Основой, которую я использую для этого, являются следующие страницы Microsoft (https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-service-to-service#request-an-access-token и https://docs.microsoft.com/en-us/rest/api/#create-the-request)

Итак, первое, что я делаю, это получаю токен с помощью следующего вызова:

curl -d "grant_type=client_credentials&client_id=<removed_for_security>&client_secret=<removed_for_security>" https://login.microsoftonline.com/<removed_for_security>/oauth2/token

Это возвращает токен.

Затем я (пытаюсь) использовать этот токен следующим образом:

curl -H "Authorization: Bearer <removed_for_security>” -vv https://<removed_for_security>.vault.azure.net/secrets/<removed_for_security>/<removed_for_security>

Я не получаю никакого контента, просто "HTTP / 1.1 401 неавторизовано"


person Little Code    schedule 05.05.2017    source источник
comment
У меня такая же проблема. Я все еще получаю сообщение об ошибке 401 Несанкционированный доступ после проработки двух ответов ниже. Существуют ли специальные разрешения для хранилища ключей, которые необходимо предоставить (политики доступа или иным образом) для использования остальных API? Я уже предоставил своему принципалу службы доступ к ключам: create, list, encrypt, decrypt, wrapKey, UnwrapKey, get. Это единственные операции, которые я пытаюсь выполнить. Я также уже предоставил своему принципалу службы доступ к самому ресурсу keyvault. По-прежнему не повезло.   -  person jschmitter    schedule 08.10.2018


Ответы (2)


Хорошо, поэтому я могу подтвердить, что запрос, который вы делаете, действителен, по большей части вы забыли версию API, но проблема не в версии API (он вам это скажет).

https://xxx.vault.azure.net/secrets/xxx/?api-version=2015-06-01

этот URL работает, поэтому я предполагаю, что токен неправильный. Самый простой способ проверить - перейти на JWT.io, вставить туда токен и просмотреть содержимое, если оно соответствует тому, что ожидает Key Vault. Возможно у вас несоответствие.

person 4c74356b41    schedule 05.05.2017
comment
Ага. Я забыл версию API. - person Little Code; 05.05.2017
comment
странно, когда я удалил версию API, он сказал мне конкретно, что я забыл указать версию API ... хорошо знать, что это сработало @LittleCode - person 4c74356b41; 05.05.2017

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

curl -d "grant_type=client_credentials&client_id=<removed_for_security>&client_secret=<removed_for_security>&resource=https://vault.azure.net" https://login.microsoftonline.com/<removed_for_security>/oauth2/token

а также добавить версию api.

person sisir sagar    schedule 02.01.2018
comment
ты спас мою ночь! :) - person Next Developer; 02.07.2018