Как включить веб-API для приема запросов от нескольких ClientID с помощью Owin / Azure AD / OAuthV2 - PullRequest
0 голосов
/ 25 июня 2019

Я хочу создать веб-API со следующими функциями:

  1. Поддержка аутентификации OAuthv2
  2. Может быть доступно нескольким клиентам
  3. Может ограничивать, какой клиент имеет доступ к какому методу API (например, некоторые XML-файлы, хранящие отображение клиента в API)

Рабочий сценарий выглядит так:

  1. Пользователь входит в веб-приложение после аутентификации в Azure. ОБЪЯВЛЕНИЕ.
  2. Azure AD предоставляет токен, содержащий UserDetails и ClientId.
  3. Вызовите API, передав токен (полученный на шаге 2 выше) в заголовок в качестве аутентификации: Bearer {{Token}}
  4. API должен получить токен, проверить, если это от действительного клиента и если клиент имеет доступ к этому API

Было бы замечательно, если бы кто-то мог указать на пример исходного кода для справки / помощи.

1 Ответ

0 голосов
/ 27 июня 2019

Я бы предложил этот пример в качестве первого шага: https://github.com/Azure-Samples/active-directory-dotnet-webapp-webapi-openidconnect-aspnetcore

Что касается обеспечения безопасности, существует несколько способов его проверки. Несмотря на то, что это код .NET 4.5, вы можете использовать этот пример в качестве справочного: https://github.com/Azure-Samples/active-directory-dotnet-native-aspnetcore-v2/blob/master/Microsoft.Identity.Web/Resource/ScopesRequiredByWebAPIExtension.cs#L13

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

Если вы имеете дело с клиентскими приложениями под другим арендатором, одним из вариантов будет наличие этих идентификаторов клиентских приложений в списке, и в промежуточном программном обеспечении вашего веб-API вы проверяете, содержится ли в этом списке издатель токена. Для справки: https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2/blob/master/Microsoft.Identity.Web/Resource/AadIssuerValidator.cs

...