Swaggerbuckle с AAD - Ошибка AADSTS500013: идентификатор ресурса не предоставлен - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь использовать AzureAD, чтобы получить токен в swagger и протестировать мой API .netCore2.1 с ним (используя Swashbuckle.AspNetCore 4.0.1)

Для этого я выполнил следующие шаги

1. Created a Web API project(asp.net Core2.1)
2. Register an Azure AD (AAD) app for the Web API
3. Updated the Web API project to use Azure AD authentication
4. Register an AAD app for the Swagger web site          https://localhost:5001/swagger
5. Granted permissions for the Swagger AAD app to access the Web API AAD app
6. Generated a Client Secret for the Swagger AAD app
7. Enabled OAuth2 implicit flow on the Swagger AAD app
8. Added Swagger to the Web API project

Когда я аутентифицируюсь, я получаю следующую ошибку.

Ошибка AADSTS500013: идентификатор ресурса не указан.

enter image description here

Когда я нажимаю кнопку авторизации

enter image description here

Я получаю ошибку AADSTS500013: Идентификатор ресурса не указан.

enter image description here

Файл * tartup.cs моего проекта WebAPI находится здесь

Пожалуйста, помогитеЯ понимаю, какой идентификатор ресурса мне не хватает здесь или как устранить эту ошибку.

Или какие-либо указания по использованию Swaggerbuckle с ASP.NET Core webAPI, особенно с WebAPI с проверкой подлинности AAD?

ОБНОВЛЕНИЯ

Я скопировал APPID URI моего webAPI с портала Azure.т.е. панель инструментов >> Microsoft - регистрации приложений >> MY_API_APP >> Настройки >> Свойства >> URI идентификатора приложения

enter image description here

Но я все еще получаю то же самоеошибка при попытке аутентификации

Ошибка AADSTS500013: не указан идентификатор ресурса

Ответы [ 2 ]

0 голосов
/ 05 июля 2019

В приложении Azure AD V1.0 необходимо установить resource, чтобы определить, к какому API-интерфейсу вы хотите получить доступ во время запросов токена аутентификации и доступа:

Поток кода:

https://docs.microsoft.com/en-us/azure/active-directory/develop/v1-protocols-oauth-code

Неявный поток:

https://docs.microsoft.com/en-us/azure/active-directory/develop/v1-oauth2-implicit-grant-flow

В Swashbuckle.AspNetCore 4.0.1 вам необходимо настроить resource в качестве параметра, если вы хотите получить токен доступадля доступа к веб-интерфейсу API:

app.UseSwaggerUI(options =>
        {
            options.SwaggerEndpoint("/swagger/v1/swagger.json", "MySite API V1");
            options.OAuthClientId("19c73866-562f-482a-bafb-89d9fe9b0aaa");
            options.OAuthAppName("Swagger Api Calls");

            // add resource 
            options.OAuthAdditionalQueryStringParams(new Dictionary<string, string>() { { "resource", "f479db30-9b62-431b-98c2-bcaae52203cf" } });
        });
0 голосов
/ 14 марта 2019

Обычно идентификатор ресурса , который однозначно идентифицирует ваше приложение.Вы можете легко найти идентификатор ресурса, как показано ниже:

При входе на портал Azure Azure Active Directory > Регистрация приложений > [Имя приложения]> Настройки > Свойства , тогда это URI идентификатора приложения

См. Снимок экрана:

enter image description here

В спецификации orignal OAuth 2.0 ,в запросе авторизации отсутствует параметр ресурса.Это использует параметр области.Конечные точки авторизации и токена позволяют клиенту указывать область запроса на доступ с помощью параметра запроса «scope».

Как объясняется в документе , когда Azure AD реализует OAuth 2.0 (конечная точка 1.0)), ресурс используется для указания запрашиваемого токена доступа для какого ресурса.А Azure AD выдаст токен, который scp основывает на разрешении, настроенном вами на портале для ресурса.

А в конечной точке v2.0 Azure AD также использует область для поддержки динамического разрешения.запрос.Более подробно вы можете посмотреть здесь .

Обычная причина ошибки

Убедитесь, что вы настроили нижеуказанные шаги соответственно.Как показано ниже:

Манифест приложения

enter image description here

URI ответа

enter image description here

Конечная точка запроса

Для V1.0 см. Этот URI https://login.microsoft.com//oauth2/authorize

Для V2.0 см. Этот URI https://login.microsoft.com//oauth2/v2.0/authorize

Согласие приложения

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

Я полагаю, что этот шаг может привести вас к решению вашей проблемы.

...