Сценарий: вызов веб-API (от имени сценария)
Узнайте, как создать веб-API, вызывающий другой веб-API от имени пользователя.
Прежде чем читать эту статью, вы должны ознакомиться с понятиями AD FS и потоком on-Behalf_Of
Обзор
Клиент (веб-приложение), не представленный на схеме ниже, вызывает защищенный веб-API и предоставляет маркер носителя JWT в заголовке HTTP "Авторизация".
Защищенный веб-API проверяет маркер и использует метод MSAL AcquireTokenOnBehalfOf для запроса (из AD FS) другого маркера, чтобы он смог, сам по себе, вызвать второй веб-API (с именем нижестоящий веб-API) от имени пользователя.
Защищенный веб-API использует этот маркер для вызова нижестоящего API. Он также может вызывать AcquireTokenSilentlater для запроса маркеров для других подчиненных API (но по-прежнему от имени того же пользователя). AcquireTokenSilent обновляет маркер при необходимости.
Чтобы лучше понять, как настроить от имени сценария проверки подлинности в AD FS, давайте рассмотрим пример, доступный здесь , и пошаговое руководство по регистрации и настройке кода приложения.
Предварительные требования
- Клиентские средства GitHub
- AD FS 2019 или более поздней версии, настроенные и запущенные
- Visual Studio 2013 или более поздней версии
Регистрация приложений в AD FS
В этом разделе показано, как зарегистрировать собственное приложение в качестве общедоступного клиента и веб-API в качестве проверяющих сторон (RP) в AD FS
В разделе "Управление AD FS" щелкните Группы приложений правой кнопкой мыши и выберите Добавить группу приложений.
В мастере группы приложений введите имя WebApiToWebApi и в разделе "Клиентский сервер" выберите собственное приложение, обращающееся к шаблону веб-API. Нажмите кнопку Далее.
Скопируйте значение идентификатора клиента. Он будет использоваться позже в качестве значения ClientId в файле app.config приложения. Введите следующий код ресурса (URI перенаправления):https://ToDoListClient. Нажмите кнопку Добавить. Нажмите кнопку Далее.
На экране "Настройка веб-API" введите идентификатор:https://localhost:44321/. Нажмите кнопку Добавить. Нажмите кнопку Далее. Это значение будет использоваться позже в файлах App.config и Web.Config приложения.
На экране "Применить контроль доступа политика" нажмите кнопку "Разрешить всем" и нажмите кнопку "Далее".
На экране "Настройка разрешений приложения" выберите openid и user_impersonation. Нажмите кнопку Далее.
На экране "Сводка" нажмите кнопку "Далее".
На экране "Завершить" нажмите кнопку "Закрыть".
В службе управления AD FS щелкните группы приложений и выберите группу приложений WebApiToWebApi . Щелкните его правой кнопкой мыши и выберите Свойства.
На экране свойств WebApiToWebApi нажмите кнопку "Добавить приложение...".
В разделе автономных приложений выберите серверное приложение.
На экране серверного приложения добавьте https://localhost:44321/ в качестве идентификатора клиента и URI перенаправления.
На экране "Настройка учетных данных приложения" выберите "Создать общий секрет". Скопируйте секрет для последующего использования.
На экране "Сводка" нажмите кнопку "Далее".
На экране "Завершить" нажмите кнопку "Закрыть".
В службе управления AD FS щелкните группы приложений и выберите группу приложений WebApiToWebApi . Щелкните его правой кнопкой мыши и выберите Свойства.
На экране свойств WebApiToWebApi нажмите кнопку "Добавить приложение...".
В разделе автономных приложений выберите веб-API.
При настройке веб-API добавьте https://localhost:44300 в качестве идентификатора.
На экране "Применить контроль доступа политика" нажмите кнопку "Разрешить всем" и нажмите кнопку "Далее".
На экране "Настройка разрешений приложения" нажмите кнопку "Далее".
На экране "Сводка" нажмите кнопку "Далее".
На экране "Завершить" нажмите кнопку "Закрыть".
Нажмите кнопку ОК на экране свойств WebApiToWebApi — веб-API 2
На экране свойств WebApiToWebApi выберите WebApiToWebApi — веб-API и нажмите кнопку "Изменить...".
На экране "Свойства веб-API" в WebApiToWebApi выберите вкладку "Правила преобразования выдачи" и нажмите кнопку "Добавить правило...".
В мастере добавления правила утверждения преобразования выберите "Отправить утверждения с помощью настраиваемого правила " в раскрывающемся списке и нажмите кнопку "Далее".
Введите PassAllClaims в имени правила утверждения: поле и x:[] => issue(claim=x); правило утверждения в настраиваемом правиле: поле и нажмите кнопку "Готово".
Нажмите кнопку "ОК" на экране свойств веб-API WebApiToWebApi
На экране свойств WebApiToWebApi выберите WebApiToWebApi — веб-API 2 и нажмите кнопку "Изменить".
На экране свойств WebApiToWebApi — веб-API 2 выберите вкладку "Правила преобразования выдачи" и нажмите кнопку "Добавить правило...
В мастере добавления правила утверждения преобразования выберите "Отправить утверждения с помощью настраиваемого правила" в раскрывающемся списке и нажмите кнопку "Далее"
Введите PassAllClaims в имени правила утверждения: поле и x:[] => issue(claim=x); правило утверждения в настраиваемом правиле: поле и нажмите кнопку "Готово".
Нажмите кнопку ОК на экране свойств WebApiToWebApi — экран свойств веб-API 2, а затем на экране свойств WebApiToWebApi.
Конфигурация кода
В этом разделе показано, как настроить веб-API для вызова другого веб-API
Скачайте пример из этой страницы
Открытие примера с помощью Visual Studio
Откройте файл app.config. Измените следующее:
ida:Authority — введите https://[имя узла AD FS]/adfs/
ida:ClientId — введите значение из #3 в разделе "Регистрация приложений" в разделе AD FS выше.
ida:RedirectUri — введите значение из #3 в разделе "Регистрация приложений" в разделе AD FS выше.
todo:TodoListResourceId — введите значение идентификатора из #4 в разделе "Регистрация приложений" в разделе AD FS выше
ida: todo:TodoListBaseAddress — введите значение идентификатора из #4 в разделе "Регистрация приложений" в разделе AD FS выше.
Откройте файл web.config в toDoListService. Измените следующее:
ida:Audience — введите значение идентификатора клиента из #12 в разделе "Регистрация приложений" в разделе AD FS выше
ida:ClientId — введите значение идентификатора клиента из #12 в разделе "Регистрация приложений" в разделе AD FS выше.
Ida: ClientSecret — введите общий секрет, скопированный из #13 в разделе "Регистрация приложений" в разделе AD FS выше.
ida:RedirectUri — введите значение RedirectUri из #12 в разделе "Регистрация приложений" в разделе AD FS выше.
ida: AdfsMetadataEndpoint — введите https://[имя узла AD FS]/federationmetadata/2007-06/federationmetadata.xml
ida:OBOWebAPIBase — введите значение идентификатора из #19 в разделе "Регистрация приложений" в разделе AD FS выше.
ida:Authority — введите https://[имя узла AD FS]/adfs
Откройте файл web.config в разделе WebAPIOBO. Измените следующее:
ida: AdfsMetadataEndpoint — введите https://[имя узла AD FS]/federationmetadata/2007-06/federationmetadata.xml
ida:Audience — введите значение идентификатора клиента из #12 в разделе "Регистрация приложений" в разделе AD FS выше
Тестирование примера
В этом разделе показано, как протестировать пример, настроенный выше.
После внесения изменений в код решения
В Visual Studio щелкните правой кнопкой мыши решение и выберите " Задать начальные проекты" ...
На страницах свойств убедитесь, что для каждого из проектов задано значение "Действие", за исключением TodoListSPA.
В верхней части Visual Studio щелкните зеленую стрелку.
На главном экране собственного приложения нажмите кнопку "Войти".
Если экран собственного приложения не отображается, выполните поиск и удаление *msalcache.bin файлов из папки, в которой репозиторий проекта сохраняется в вашей системе.
Вы будете перенаправляться на страницу входа AD FS. Выполните вход.
После входа введите текстовый веб-API в вызов веб-API в элементе Create a Список дел. Нажмите кнопку "Добавить элемент". При этом веб-API (Список дел служба списка), который затем вызывает веб-API 2 (WebAPIOBO) и добавляет элемент в кэш.
Next Steps
Подключения AD FS OpenID или потоки OAuth и сценарии использования приложений