Как получить действующий токен доступа для вызова Azure REST API из Postman

Я хочу иметь возможность вызывать остальные API-интерфейсы Azure для создания / чтения ресурсов, таких как экземпляры контейнеров, реестры контейнеров и учетные записи хранения.

В своем Azure AD я зарегистрировал приложение для своего приложения и получил clientID, secret и tenantId.

Я вызвал следующий API, чтобы получить токен:

https://login.microsoftonline.com/{{tenantId}}/oauth2/token

с участием

ресурс, client_id, client_secret и grant_type

как параметры тела в запросе POST

Токен, который я получаю отсюда, не работает нормально. Я получаю следующую ошибку:

{
    "error": {
        "code": "AuthorizationFailed",
        "message": "The client 'ff70fcft-21ub-4a7f-8h20-3f405c5d17e0' with object id 'ff70fcff-22bb-4a7f-9f20-3f405c1e17e0' does not have authorization to perform action 'Microsoft.ContainerInstance/containerGroups/read' over scope '/subscriptions/afb6001a-XXXX-4c39-XXXX-9706012c30ba/resourceGroups/app2/providers/Microsoft.ContainerInstance/containerGroups/app2' or the scope is invalid. If access was recently granted, please refresh your credentials."
    }
}

Однако, когда я копирую токен доступа из вкладки «Сеть» в браузере, он работает нормально.

Я считаю, что что-то не так с регистрацией приложений, потому что мне кажется, что приложение и мои ресурсы в настоящее время отключены.

Может ли кто-нибудь помочь мне в этом?

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


person ash007    schedule 21.10.2019    source источник
comment
Какой api вы хотите вызвать?   -  person Tony Ju    schedule 21.10.2019
comment
@TonyJu Я пытался поразить это: GET management.azure.com/subscriptions{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerInstance/containerGroups/{containerGroupName}?api-version=2018-10-01   -  person ash007    schedule 21.10.2019


Ответы (1)


Похоже, вы не предоставили зарегистрированному приложению разрешение на доступ к подписке Azure.

Вот шаги:

1.Все услуги-> Подписки-> выберите свою подписку-> нажмите Контроль доступа

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

2.Нажмите «Добавить», чтобы добавить назначение ролей в зарегистрированное приложение.

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

3. Получите токен доступа для повторного доступа к api, он будет работать.

Ссылка: https://docs.microsoft.com/en-us/azure/role-based-access-control/role-assignments-portal#overview-of-access-control-iam

Обновление:

Пожалуйста, выберите правильную подписку.

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

person Tony Ju    schedule 21.10.2019
comment
то, что я не получаю, это то, что когда я что-то набираю в текстовом поле Select *, я не могу найти свой ресурс, и отображается сообщение: В этой подписке не обнаружены управляемые идентификаторы экземпляра контейнера. Я уже дошел до предложенного вами шага, но не мог пойти дальше - person ash007; 21.10.2019
comment
@AyushOjha На шаге 2 вы должны назначить доступ вашему зарегистрированному приложению. Можете ли вы проверить, создали ли вы экземпляр контейнера в той же подписке? - person Tony Ju; 21.10.2019
comment
@AyushOjha Смотрите обновления в ответе, возможно, у вас больше одной подписки. - person Tony Ju; 21.10.2019
comment
Да, он находится в той же подписке. - person ash007; 21.10.2019
comment
@AyushOjha Давайте проанализируем проблему. Вы можете вызвать api, нажав здесь docs.microsoft.com/en-us/rest/api/container-instances/, верно? Если да, добавляли ли вы назначение ролей в рамках той же подписки? Если да, то не имеет смысла, что вы получили эту ошибку. - person Tony Ju; 22.10.2019
comment
когда я пробую API на справочной странице документа, он работает, потому что он использует мой токен доступа из моих учетных данных, но когда я пытаюсь использовать почтальон, токен, который я получаю, не правильный, намного короче, чем тот, который работает, кажется, что это не так у меня недостаточно разрешений. У меня есть роль владельца и участника подписки. - person ash007; 22.10.2019
comment
@AyushOjha Вот почему я прошу вас назначить роль зарегистрированному вами приложению (шаг 2). У вас есть client_id, вам нужно выполнить поиск по имени клиента и выбрать приложение. - person Tony Ju; 22.10.2019
comment
Позвольте нам продолжить это обсуждение в чате. - person ash007; 22.10.2019