В нашем проекте ниже представлен sceanrio:
- MainWebApp1 - это веб-приложение MVC на https://test.com/mainwebapp1
- WebApp2 - это веб-приложение MVC на https://test.com/webapp2
- WebApp3 - это веб-приложение MVC + Angular5 на https://test.com/webapp3
- WebApp4 - это Angular5 WebApplication в https://test.com/webapp4
- 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.
- Поскольку веб-приложения WebApp2 / WebApp3 / WebApp4 все отличаются от
друг друга функционально и технически, но под одним и тем же арендатором,
если пользователю снова будет предложено войти в Azure AD, как только пользователь
нажимает на любое WebApp2 / WebApp3 / WebApp4 . Если да, то это хорошо
Идея настроить эти приложения с помощью Azure AD с разными
ClientId (тот же TenantId)
- Когда пользователь входит в WebApp2, мы получаем токен, содержащий утверждения
TenantId, ClientId, UserId
- Чтобы получить данные, 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?