Какова область для Azure управления ресурсами с типом разрешения авторизации устройства? - PullRequest
0 голосов
/ 18 марта 2020

Я создаю приложение CLI для предоставления ресурсов Azure. Ранее я использовал поток кода авторизации с resource, установленным на https://management.azure.com/. Теперь я хотел бы перейти к использованию типа разрешения авторизации устройства RF C 8628 (Azure документация ). Я могу успешно войти в систему с такими областями, как openid profile. Однако, когда я использую область видимости, такую ​​как https://management.azure.com, я получаю сообщение об ошибке:

{
  "error": "invalid_scope",
  "error_description": "AADSTS70011: The provided request must include a 'scope' input parameter. The provided value for the input parameter 'scope' is not valid. The scope openid https://management.azure.com/ is not valid. The scope format is invalid. Scope must be in a valid URI form <https://example/scope> or a valid Guid <guid/scope>.\r\n[..]",
  "error_codes": [70011],
}

Я отправляю запрос POST с телом, подобным client_id=<client-id>&scope=openid+https%3A%2F%2Fgraph.microsoft.com%2F.default на https://login.microsoftonline.com/<tenant>/oauth2/v2.0/devicecode. С этими областями я могу войти в систему просто отлично, но любые последующие запросы к Azure API управления ресурсами (например, к DELETE группе ресурсов) завершатся с 401 Unauthorized.

1 Ответ

1 голос
/ 19 марта 2020

Если вы хотите использовать поток кода устройства для доступа к ресурсам azure, выполните следующие действия:

1. Перейдите к своему приложению AD в Azure Active Directory на портале -> API permissions -> Add a permission -> выберите Azure Service Management API -> выберите user_impersonation.

enter image description here

2. Перейдите к подписке на портале -> Access control (IAM), убедитесь, что ваша учетная запись, используемая для входа, имеет роль, например Contributor в подписке. Если нет, добавьте пользователя в качестве роли в подписке, выполните следующие действия: do c.

enter image description here

3. В почтальоне используйте запрос ниже.

URL запроса:

POST https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/devicecode

Тело запроса:

client_id=<client-id>
scope=https://management.azure.com/user_impersonation

enter image description here

В браузере перейдите к https://microsoft.com/devicelogin, введите код и войдите в свою учетную запись, приложение позволит вам согласиться на разрешение, нажмите Accept.

enter image description here

4.После успешного входа в систему в почтовом отделении используйте запрос ниже.

URL запроса:

POST https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token

Тело запроса:

grant_type: urn:ietf:params:oauth:grant-type:device_code
client_id: <client-id>
device_code: <device_code in the screenshot of step 3>

enter image description here

5.Используйте access_token на шаге 4 для вызова Azure REST API, например, Группы ресурсов - Список , он работает нормально.

enter image description here

Для получения дополнительной информации вы можете обратиться к - Платформа идентификации Microsoft и поток авторизации устройства OAuth 2.0 .


Кроме , для разрешения разрешения успешно На шаге 3 убедитесь, что для вашего клиента в настройках ниже (Azure AD -> Enterprise applications -> User settings -> Users can consent to apps accessing company data on their behalf) установлено значение Yes, в противном случае вам нужно разрешить администратору нажать кнопка Grant admin consent for xxxx на шаге 1.

enter image description here

...