Сценарий. Вызов веб-API собственного приложения

Область применения: Windows Server 2022, Windows Server 2019, AD FS 2019 и более поздних версий

Узнайте, как создавать собственные пользователи, выполняющие вход в приложение, прошедшие проверку подлинности AD FS 2019, и получать маркеры с помощью библиотеки MSAL для вызова веб-API.

Перед чтением этой статьи необходимо ознакомиться с понятиями AD FS и потоком предоставления кода авторизации.

Обзор

Overview

В этом потоке вы добавляете проверку подлинности в собственное приложение (общедоступный клиент), который, следовательно, может выполнять вход пользователей и вызывать веб-API. Чтобы вызвать веб-API из собственного приложения, который входит в систему пользователей, можно использовать метод получения токена AcquireTokenInteractive MSAL. Чтобы реализовать это взаимодействие, MSAL использует веб-браузер.

Чтобы лучше понять, как настроить собственное приложение в AD FS для интерактивного получения маркера доступа, давайте рассмотрим пример, доступный здесь и пошаговое руководство по регистрации приложения и настройке кода.

Предварительные требования

  • Клиентские средства GitHub
  • AD FS 2019 или более поздней версии, настроенные и запущенные
  • Visual Studio 2013 или более поздней версии

Регистрация приложений в AD FS

В этом разделе показано, как зарегистрировать собственное приложение в качестве общедоступного клиента и веб-API в качестве проверяющей стороны (RP) в AD FS

  1. В ad FS Management щелкните правой кнопкой мыши группы приложений и выберите "Добавить группу приложений".

  2. В мастере группы приложений для имени введите NativeAppToWebApi и в разделе "Клиентский сервер" выберите собственное приложение, обращающееся к шаблону веб-API. Нажмите кнопку Далее.

    Screenshot of the Welcome page of the Add Application Group Wizard showing the Native application accessing a Web API template highlighted.

  3. Скопируйте значение идентификатора клиента. Он будет использоваться позже в качестве значения ClientId в файле app.config приложения. Введите следующий код ресурса (URI) перенаправления:https://ToDoListClient. Нажмите кнопку Добавить. Нажмите кнопку Далее.

    Screenshot of the Native application page of the Add Application Group Wizard showing the redirect U R I.

  4. На экране "Настройка веб-API" введите идентификатор:https://localhost:44321/. Нажмите кнопку Добавить. Нажмите кнопку Далее. Это значение будет использоваться позже в файлах App.config и Web.config приложения.

    Screenshot of the Configure Web API page of the Add Application Group Wizard showing the correct identifier.

  5. На экране "Применить контроль доступа политика" нажмите кнопку "Разрешить всем" и нажмите кнопку "Далее".

    Screenshot of the Choose Access Control Policy page of the Add Application Group Wizard showing the Permit everyone option highlighted.

  6. На экране "Настройка разрешений приложения" убедитесь, что выбран открытый идентификатор и нажмите кнопку "Далее".

    Screenshot of the Configure Application Permissions page of the Add Application Group Wizard showing open I D selected.

  7. На экране "Сводка" нажмите кнопку "Далее".

  8. На экране "Завершить" нажмите кнопку "Закрыть".

  9. В службе управления AD FS щелкните группы приложений и выберите группу приложений NativeAppToWebApi . Щелкните его правой кнопкой мыши и выберите Свойства.

    Screenshot of the A D F S Management dialog box showing the NativeAppToWebApi group highlighted and the Properties option in the dropdown list.

  10. На экране свойств NativeAppToWebApi выберите NativeAppToWebApi — веб-API в веб-API и нажмите кнопку "Изменить".

    Screenshot of the NativeAppToWebApi Properties dialog box showing the NativeAppToWebApi - Web A P I application highlighted.

  11. На экране "Свойства веб-API" в NativeAppToWebApi выберите вкладку "Правила преобразования выдачи" и нажмите кнопку "Добавить правило".

    Screenshot of the NativeAppToWebApi - Web A P I Properties dialog box showing the Issuance Transform Rules tab.

  12. В мастере добавления правила утверждения преобразования выберите "Преобразовать входящее утверждение " из шаблона правила утверждения: раскрывающийся список и нажмите кнопку "Далее".

    Screenshot of the Select Rule Template page of the Add Transform Claim Rule Wizard showing the Transform an Incoming Claim option selected.

  13. Введите NameID в имя правила утверждения: поле. Выберите имя для типа входящего утверждения:, идентификатор имени для типа исходящих утверждений: и формат идентификатора исходящего имени:. Нажмите кнопку " Готово".

    Screenshot of the Configure Rule page of the Add Transform Claim Rule Wizard showing the configuration explained above.

  14. Нажмите кнопку "ОК" на экране "Свойства веб-API NativeAppToWebApi" и экран свойств NativeAppToWebApi.

Конфигурация кода

В этом разделе показано, как настроить собственное приложение для входа пользователя и получения маркера для вызова веб-API

  1. Скачайте пример из этой страницы

  2. Открытие примера с помощью Visual Studio

  3. Откройте файл app.config. Измените следующее:

    • ida:Authority — ввод чttps://[your AD FS hostname]/adfs

    • ida:ClientId — введите значение идентификатора клиента из #3 в разделе "Регистрация приложений" в разделе AD FS выше.

    • ida:RedirectUri — введите значение URI перенаправления из #3 в разделе "Регистрация приложений" в разделе AD FS выше.

    • todo:TodoListResourceId — введите значение идентификатора из #4 в разделе "Регистрация приложений" в разделе AD FS выше

    • ida: todo:TodoListBaseAddress — введите значение идентификатора из #4 в разделе "Регистрация приложений" в разделе AD FS выше.

      Screenshot of the App config file showing the modified values.

  4. Откройте файл web.config. Измените следующее:

    • ida:Audience — введите значение идентификатора из #4 в разделе "Регистрация приложений" в разделе AD FS выше

    • ida: AdfsMetadataEndpoint — ввод https://[your AD FS hostname]/federationmetadata/2007-06/federationmetadata.xml

      Screenshot of the web config file showing the modified values.

Тестирование примера

В этом разделе показано, как протестировать пример, настроенный выше.

  1. После внесения изменений в код решения

  2. В Visual Studio щелкните правой кнопкой мыши решение и выберите " Задать начальные проекты" ...

    Screenshot of the list that appears when you right-click the solution with the Set Start Up Projects option highlighted.

  3. На страницах свойств убедитесь, что для каждого проекта задано значение "Пуск" для каждого из проектов.

    Screenshot of the Solution Property Pages dialog box showing the Multiple startup project option selected and all of the projects' actions set to Start.

  4. В верхней части Visual Studio щелкните зеленую стрелку.

    Screenshot of the Visual Studio UI with the Start option called out.

  5. На главном экране собственного приложения нажмите кнопку "Войти".

    Screenshot of the To Do List Client dialog box.

Если экран собственного приложения не отображается, выполните поиск и удаление *msalcache.bin файлов из папки, в которой репозиторий проекта сохраняется в системе.

  1. Вы будете перенаправляться на страницу входа AD FS. Выполните вход.

    Screenshot of the Sign In page.

  2. После входа введите текстовое приложение Build Native App в веб-API в элементе Create a Список дел. Нажмите кнопку "Добавить элемент". Это вызовет службу списков Список дел (веб-API) и добавит элемент в кэш.

    Screenshot of the To Do List Client dialog box with the new to do item populating the To Do Items section.

Next Steps

Подключения AD FS OpenID или потоки OAuth и сценарии использования приложений