Пример active-directory-dotnet-webapi-onbehalfof не работает

Я пытаюсь запустить пример active-directory-dotnet-webapi-onbehalfof в режиме одного арендатора. Я зарегистрировал службу веб-приложений и собственный клиент приложений в качестве глобального администратора для арендатора. Когда я запускаю образец, как пользователь в клиенте, я могу получить токен в клиенте только после того, как выскакивает согласие (впервые для пользователя), и затем вызов обращается к службе, но там это терпит неудачу с ниже. Это почему? Документация говорит, что когда администратор арендатора регистрирует приложение, дальнейшее согласие не требуется? Я не думаю, что можно дать согласие, когда удаленный веб-интерфейс пытается получить токен OBO. Что-то глючит... Команда AAD, пожалуйста, уточните, как использовать функцию OBO.

AADSTS65001: Пользователь или администратор не дал согласие на использование приложения с идентификатором 'b824502e-fe8a-4770-bd98-8d65a07efcc3'. Отправьте интерактивный запрос авторизации для этого пользователя и ресурса. Идентификатор трассировки: ad7843d0-be4e-4098-8f7c-43c8e5505cfc Идентификатор корреляции: 140466a4-7250-429f-8843-dbd4f63dc60e Метка времени: 2016-11-25 21:46:13Z

1 ответ

Когда вы регистрируете приложение с помощью портала управления Azure (manage.windowsazure.com) в качестве администратора клиента, тогда да, вы не должны получать согласие, если в этом же клиенте извлекаются последующие токены.

Поскольку вы видите согласие на собственное клиентское приложение, а затем получаете это сообщение об ошибке, мы должны предположить, что что-то не выполняется, что может подавить согласие для вашего приложения.

Чтобы решить эту проблему, я рекомендую просто инициировать интерактивный запрос на авторизацию, как и следует из сообщения об ошибке. Вы можете сделать это, сгенерировав URL-адрес входа для своего приложения со специальной строкой запроса, которая заставит запросить согласие широкого клиента (prompt = admin_consent).

Вот скелет для URL, который вам нужно заполнить:

https://login.microsoftonline.com/<TenantID>/oauth2/authorize?client_id=<AppID>&response_type=code&redirect_uri=<RedirectURI>&resource=<ResourceURI>&prompt=admin_consent

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

Я надеюсь, что это решит вашу проблему.

Другие вопросы по тегам