Как настроить приложения и WebApi с помощью Azure AD & OWIN - PullRequest
0 голосов
/ 28 июня 2019

В нашем проекте ниже представлен sceanrio:

enter image description here

  1. MainWebApp1 - это веб-приложение MVC на https://test.com/mainwebapp1
  2. WebApp2 - это веб-приложение MVC на https://test.com/webapp2
  3. WebApp3 - это веб-приложение MVC + Angular5 на https://test.com/webapp3
  4. WebApp4 - это Angular5 WebApplication в https://test.com/webapp4
  5. WebAPI2, WebApi3, WebApi4 - все WebAPI, размещенные в https://test.com/WebAPI2 https://test.com/WebAPI3 и https://test.com/WebAPI4

Пользователь входит в MainWebApp1, настроенный с помощью Azure AD (TenantId: T1, ClientId: C1). После входа в MainWebApp1 в представлении MVC отображаются ссылки веб-приложений WebApp2, WebApp3, WebApp4.

  1. Поскольку веб-приложения WebApp2 / WebApp3 / WebApp4 все отличаются от друг друга функционально и технически, но под одним и тем же арендатором, если пользователю снова будет предложено войти в Azure AD, как только пользователь нажимает на любое WebApp2 / WebApp3 / WebApp4 . Если да, то это хорошо Идея настроить эти приложения с помощью Azure AD с разными ClientId (тот же TenantId)
  2. Когда пользователь входит в WebApp2, мы получаем токен, содержащий утверждения TenantId, ClientId, UserId
  3. Чтобы получить данные, WebApp2 выполняет вызовы к WebApi2, передавая токен (полученный на шаге 2 выше) в заголовке как Аутентификация: Bearer {{Token}}. Таким образом, в WebApi2, если мы реализуем конвейер аутентификации OWIN , мы можем указать TenantId и ClientId в Startup.cs, а затем использовать атрибут [Authorize] в API-контроллере, который проверяет, упоминается ли тот же ClientId в токене.
[Authorize]
public class TodoListController : ApiController
{

Но здесь у нас есть сценарий, когда внешний клиент или другое веб-приложение, такое как WebApp3 / 4, может также получить доступ к WebApi2. Итак, как мы можем настроить WebApi2 так, чтобы его можно было вызывать из WebApp2 / WebApp3 / WebApp4 или внешнего клиента, передав соответствующий токен.

Какой метод AzureAD ADAL мы должны реализовать? каким должен быть тип предоставления токена?

Существуют ли дополнительные настройки, которые необходимо выполнить на портале Azure?

...