Поделиться через


Сценарий: нативное приложение вызывает веб-API

Learn how to build a native app signing-in users authenticated by AD FS 2019 and acquiring tokens using MSAL library to call web APIs.

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

Overview

Overview

В этом потоке вы добавляете аутентификацию в собственное приложение (общедоступный клиент), которое, следовательно, может аутентифицировать пользователей и вызывать веб-API. To call a Web API from a Native App that signs in users, you can use MSAL's AcquireTokenInteractive token acquisition method. Чтобы реализовать это взаимодействие, MSAL использует веб-браузер.

To better understand how to configure a Native App in AD FS to acquire access token interactively, let's use a sample available here and walkthrough the app registration and code configuration steps.

Pre-requisites

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

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

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

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

  2. On the Application Group Wizard, for the Name enter NativeAppToWebApi and under Client-Server applications select the Native application accessing a Web API template. Click Next.

    Снимок экрана страницы приветствия мастера добавления группы приложений с выделенным шаблоном доступа к веб-API для собственного приложения.

  3. Copy the Client Identifier value. It will be used later as the value for ClientId in the application's App.config file. Enter the following for Redirect URI:https://ToDoListClient. Click Add. Click Next.

    Снимок экрана страницы нативного приложения мастера добавления группы приложений, показывающий перенаправление URI.

  4. On the Configure Web API screen, enter the Identifier:https://localhost:44321/. Click Add. Click Next. This value will be used later in the application's App.config and Web.config files.

    Снимок экрана: страница

  5. On the Apply Access Control Policy screen, select Permit everyone and click Next.

    Снимок экрана: страница

  6. On the Configure Application Permissions screen, make sure openid is selected and click Next.

    Снимок экрана: страница

  7. On the Summary screen, click Next.

  8. On the Complete screen, click Close.

  9. In AD FS Management, click on Application Groups and select NativeAppToWebApi application group. Right-click and select Properties.

    Снимок экрана диалогового окна

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

    Снимок экрана: диалоговое окно

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

    Снимок экрана: диалоговое окно

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

    Снимок экрана страницы выбора шаблона правила в мастере добавления правила преобразования утверждения, на котором выбран параметр

  13. Enter NameID in Claim rule name: field. Select Name for Incoming claim type:, Name ID for Outgoing claim type: and Common Name for Outgoing name ID format:. click Finish.

    Снимок экрана страницы настройки правила мастера добавления правила преобразования требований, отображающей описанную выше конфигурацию.

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

Code Configuration

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

  1. Download the sample from here

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

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

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

    • ida:ClientId - enter the Client Identifier value from #3 in App Registration in AD FS section above.

    • ida:RedirectUri - enter the Redirect URI value from #3 in App Registration in AD FS section above.

    • todo:TodoListResourceId – enter the Identifier value from #4 in App Registration in AD FS section above

    • ida: todo:TodoListBaseAddress - enter the Identifier value from #4 in App Registration in AD FS section above.

      Снимок экрана: файл конфигурации приложения с измененными значениями.

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

    • ida:Audience - enter the Identifier value from #4 in App Registration in AD FS section above

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

      Снимок экрана: файл веб-конфигурации с измененными значениями.

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

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

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

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

    Снимок экрана: список, который отображается при щелчке правой кнопкой мыши решения с выделенным параметром

  3. On the Properties pages make sure Action is set to Start for each of the Projects

    Снимок экрана: диалоговое окно

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

    Снимок экрана: пользовательский интерфейс Visual Studio с выделенной опцией

  5. On the Native App's Main screen, click on Sign In.

    Снимок экрана диалогового окна Клиентский список дел.

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

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

    Снимок экрана: страница входа.

  2. После входа в систему, введите текст Построить собственное приложение для Web API в создайте элемент списка дел. Click Add item. Это вызовет службу списков Список дел (веб-API) и добавит элемент в кэш.

    Снимок экрана диалогового окна

Next Steps

Потоки OpenID Connect/OAuth AD FS и сценарии приложений