Azure AD - переключить учетную запись пользователя в WebAPI на использование нисходящего сервиса? - PullRequest
0 голосов
/ 01 мая 2018

В Azure AD у меня есть следующий сценарий:

  • Одностраничное приложение (использует)> WebAPI 1 (использует)> WebAPI 2

Аутентифицированный пользователь использует WebAPI 1 под своей идентификацией.

Некоторые операции в WebAPI 1 должны использовать WebAPI 2 под другим идентификатором (сервис-сервис), поэтому необходимо запрашивать токен доступа под другим идентификатором (сервисная учетная запись). Я использую ADAL.NET в WebAPI.

Я прочитал документацию MS ( здесь ), чтобы понять различные сценарии / протоколы, но я не вижу ничего подходящего этому сценарию, где мне нужно запросить токен доступа от имени отличается от пользователя, который уже аутентифицирован.

Я рассмотрел использование ADAL для аутентификации пользователей с помощью имени пользователя и пароля (из любопытства), но не похоже, что это возможно ( описано здесь ) с веб-сайта / WebAPI (только собственный клиент) .

Кто-нибудь знает, как лучше всего получить токен для пользователя, отличного от аутентифицированного пользователя?

1 Ответ

0 голосов
/ 01 мая 2018

Вы не можете, но вы не должны этого хотеть (и есть лучший подход).

Как правило, конфиденциальный клиент (например, API) не должен никогда иметь токен доступа от имени пользователя, который фактически не выполнил вход и не предоставил авторизацию приложению. Для API среднего уровня, такого как WebAPI 1, который хочет выполнить аутентифицированный запрос к внутреннему API (WebAPI 2), у вас есть два варианта:

  1. WebAPI 1 обменивает полученный токен доступа на токен доступа к WebAPI 2 от своего имени и текущего зарегистрированного пользователя.
  2. WebAPI 1 получает токен доступа к WebAPI 2, аутентифицируя только как самого себя.

Похоже, ваш сценарий должен попасть во второй подход. WebAPI 1 получит токен доступа только для приложений к WebAPI 2 и будет использовать его в запросах к WebAPI 2. В свою очередь, WebAPI 2 должен понимать, что токен доступа также может быть только для приложения (не пользователя), и должен выполнить авторизацию на основе идентификатора приложения (а не идентификатора пользователя).

С помощью ADAL для .NET вы можете получить токен доступа от имени клиента (в данном случае WebAPI 1), используя:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...