OAuth2 с Azure AD - не получить согласие пользователя

Я пытаюсь заставить рабочий процесс OAuth2 работать правильно для Azure AD. Я следую указаниям из этого источника: https://msdn.microsoft.com/en-us/library/azure/dn645542.aspx

Я могу успешно получить ответ с кодом авторизации, используя этот запрос: https://login.microsoftonline.com/[app-endpoint-id]/oauth2/authorize?response_type=code&client_id=[client-id]&redirect_uri=[redirect-uri]

Затем я использую код авторизации для запроса токена доступа с постом http, например так (я проверяю это с помощью Почтальона):

POST /[app-endpoint-id]/oauth2/token HTTP/1.1 Host: login.microsoftonline.com Cache-Control: no-cache Postman-Token: ed098281-9aa4-6e5f-915d-0253d9a876d3 Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&client_id=[client-id]&code=[authorization_code]&redirect_uri=[redirect_uri]&client_secret=[client-secret]&resource=[app-url]

Я получаю следующее сообщение об ошибке из запроса POST:

{"error": "invalid_grant", "error_description": "AADSTS65001: пользователь или администратор не дал согласие на использование приложения с идентификатором "Приложение-идентификатор. Отправить интерактивный запрос авторизации для этого пользователя и ресурс. \r\nTrace ID: trace-di\r\nКорреляционный идентификатор: id корреляции \r\nTimestamp: 2016-01-13 17: 18: 39Z " "error_codes": [65001], "Timestamp":" 2016-01-13 17: 18: 39Z", "trace_id": "след-ID", "correlation_id": "Корреляция-идентификатор"}

Если я очищу свой кеш и сделаю первый запрос кода авторизации, я буду перенаправлен для входа в систему. Однако я не получу способа авторизации приложения после входа в систему, как указано в документации:

//azure.microsoft.com/en-us/documentation/articles/active-directory-integrating-applications/

Что я здесь не так делаю? Я пытаюсь получить токен доступа.

Ответы

Ответ 1

Проблема, с которой вы работаете, заключается в том, что арендатор, которого вы используете для доступа к вашему приложению, не добавил ваше приложение в список поддерживаемых приложений. Он говорит вам использовать интерактивный поток в качестве администратора.

Согласие состоит из двух этапов:

1) Сначала администратор арендатора должен утвердить приложение. Это можно сделать 1) на портале Azure клиента, желающего использовать приложение, или 2) запустив приложение и используя учетные данные администратора для приложения при входе.

Пример утверждения портала Azure:


(источник: azurecomcdn.net)

2) Во-вторых, любой дополнительный пользователь (не являющийся администратором) получит согласие на использование его личной информации при первом использовании приложения после того, как администратор даст согласие на его использование.

Ответ 2

Попробуйте указать ресурс как https://graph.windows.net 'в почтовом запросе.

Это сработало для меня.

Ответ 3

Убедитесь, что настройки Azure AD позволяют добавлять такие приложения. В Azure AD Application> Manage> User settings есть несколько свойств, которые влияют на то, как приложение зарегистрировано. Возможно, кто-то в вашей организации полностью отключил регистрацию приложений или серьезно ограничил параметры. Вы можете проверить эти настройки. Есть несколько вариантов здесь для этого вопроса.