вызов защищенного собственного веб-API в Azure AD n с определенной областью действия с помощью приложения-демона / консоли

У меня есть собственный веб-API в ядре dotnet, я защитил веб-API с помощью [Authorize (Policy = "Admin")].
Я зарегистрировал веб-API в Azure AD с помощью регистрации приложений. Я создал две роли приложения: «Администратор» и «Клиент».
У меня есть консольное приложение, которое зарегистрировано как клиент в Azure AD с помощью регистрации приложений в Azure.
Теперь, когда я запрашиваю токен доступа с помощью области - api: // {guid} /.default (все разрешения), запрашивая конечную точку токена OAuth 2.0 (v2) - https://login.microsoftonline.com/ {tenantID} /oauth2/v2.0/token

Я получаю токен доступа и могу вызвать свой метод веб-API. Но когда я вызываю веб-API с определенной областью действия, скажите "Область администратора": api: // {guid} / Admin

Я получаю сообщение об ошибке -

Ошибка: Cound не завершил запрос токена OAuth 2.0: "AADSTS70011: предоставленный запрос должен включать входной параметр" scope ". Указанное значение для входного параметра" scope "недействительно. Scope api: // {guid} / Admin не действует


person reach2saurabh    schedule 23.04.2020    source источник
comment
Извините, возможно, я раньше давал непонятный ответ. На данный момент я обновил свой ответ. Если мой ответ полезен для вас, вы можете принять его как ответ (нажмите на галочку рядом с ответом, чтобы переключить его с серого на заполненный. См. meta.stackexchange.com/questions/5234/). Это может быть полезно для других членов сообщества. Спасибо.   -  person Allen Wu    schedule 28.04.2020


Ответы (1)


api://{guid}/Admin не является API, который предоставляется в вашем приложении веб-API Azure AD.

Если вы хотите добавить «Admin» в качестве делегированного разрешения, вы должны предоставить его как API.

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

Затем вы должны добавить делегированные разрешения в свое веб-приложение в приложении Azure AD (это не приложение Azure AD с веб-интерфейсом).

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

Не забудьте нажать «Предоставить согласие администратора для {вашего клиента}», чтобы завершить получение согласия администратора.

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

Теперь вы можете указать его как scope при запросе токена с помощью поток кода авторизации.


Обновление:

Извините, я должен добавить сюда дополнительную информацию.

Снимок экрана выше предназначен для демонстрации делегированного разрешения.

Если вы хотите предоставить разрешение приложения, создание ролей приложения является правильным.

После создания ролей приложения вы должны добавить разрешения в свое веб-приложение в приложении Azure AD (это не приложение Azure AD с веб-API).

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

Выберите приложение веб-API Azure AD. Затем вы увидите разрешения для приложения. Выберите роль приложения, которую вы только что создали в приложении веб-API Azure AD.

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

Не забудьте нажать «Предоставить согласие администратора для {вашего клиента}», чтобы завершить получение согласия администратора.

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

После этого вы можете указать его как scope при запросе токена с помощью поток учетных данных клиента.

person Allen Wu    schedule 24.04.2020