Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Узнайте, как создать веб-API, вызывающий другой веб-API от имени пользователя.
Прежде чем читать эту статью, вы должны ознакомиться с понятиями AD FS и потоком On-Behalf_Of.
Overview
Клиент (веб-приложение), не показан на схеме, обращается к защищенному веб-API и предоставляет JWT токен в заголовке HTTP "Авторизация".
Защищенный веб-API проверяет токен и использует метод MSAL AcquireTokenOnBehalfOf для запроса (из AD FS) другого токена, чтобы он мог самостоятельно вызвать второй веб-API (с именем дочерний веб-API) от имени пользователя.
Защищенный веб-API использует этот маркер для вызова нижестоящего API. Он также может вызывать AcquireTokenSilent для запроса токенов для других подчиненных API (но по-прежнему от имени того же пользователя). AcquireTokenSilent обновляет маркер при необходимости.
To better understand how to configure on behalf of auth scenario in AD FS, 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.
In AD FS Management, right-click on Application Groups and select Add Application Group.
On the Application Group Wizard, for the Name enter WebApiToWebApi and under Client-Server applications select the Native application accessing a Web API template. Click Next.
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.
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.
On the Apply Access Control Policy screen, select Permit everyone and click Next.
On the Configure Application Permissions screen, select openid and user_impersonation. Click Next.
On the Summary screen, click Next.
On the Complete screen, click Close.
In AD FS Management, click on Application Groups and select WebApiToWebApi application group. Right-click and select Properties.
On WebApiToWebApi properties screen, click Add application….
Under Standalone applications, select Server application.
On Server Application screen, add https://localhost:44321/ as the Client Identifier and Redirect URI.
На экране "Настройка учетных данных приложения" выберите "Создать общий секрет". Скопируйте секрет для последующего использования.
On the Summary screen, click Next.
On the Complete screen, click Close.
In AD FS Management, click on Application Groups and select WebApiToWebApi application group. Right-click and select Properties.
On WebApiToWebApi properties screen, click Add application….
Under Standalone applications, select Web API.
On Configure Web API, add https://localhost:44300 as the Identifier.
On the Apply Access Control Policy screen, select Permit everyone and click Next.
On the Configure Application Permissions screen, click Next.
On the Summary screen, click Next.
On the Complete screen, click Close.
Нажмите ОК на экране свойств WebApiToWebApi — Web API 2.
На экране свойств WebApiToWebApi выберите WebApiToWebApi — веб-API и нажмите кнопку "Изменить...".
На экране "Свойства веб-API" в WebApiToWebApi выберите вкладку "Правила преобразования выдачи" и нажмите кнопку "Добавить правило...".
В мастере «Добавить правило преобразования утверждения» выберите «Отправить утверждения с помощью настраиваемого правила» в раскрывающемся списке и нажмите «Далее».
Enter PassAllClaims in Claim rule name: field and x:[] => issue(claim=x); claim rule in Custom rule: field and click Finish.
Нажмите кнопку "ОК" на экране свойств веб-API WebApiToWebApi
На экране свойств WebApiToWebApi выберите WebApiToWebApi — веб-API 2 и нажмите кнопку "Изменить".
На экране свойств WebApiToWebApi (веб-API 2) выберите вкладку "Правила преобразования выдачи" и нажмите "Добавить правило...
В мастере добавления правила утверждения преобразования выберите "Отправить утверждения, используя настраиваемое правило" в раскрывающемся списке и нажмите "Далее"
Введите PassAllClaims в поле имени правила утверждения и x:[] => issue(claim=x); правило утверждения в поле настраиваемого правила: и нажмите кнопку "Готово".
Нажмите кнопку ОК на экране свойств WebApiToWebApi — Web API 2, а затем на экране свойств WebApiToWebApi.
Code Configuration
В этом разделе показано, как настроить веб-API для вызова другого веб-API
Download the sample from here
Открытие примера с помощью 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 щелкните правой кнопкой мыши решение и выберите " Задать начальные проекты" ...
On the Properties pages make sure Action is set to Start for each of the Projects, except TodoListSPA.
В верхней части Visual Studio щелкните зеленую стрелку.
On the Native App's Main Screen, click on Sign In.
Если экран собственного приложения не отображается, выполните поиск и удаление *msalcache.bin файлов из папки, в которой репозиторий проекта сохраняется в вашей системе.
Вы будете перенаправляться на страницу входа AD FS. Войдите в систему.
После входа в систему введите текст Web Api в поле вызова Web Api в элементе «Создать задание». Click Add item. Это вызовет веб-API (Служба списка дел), которое затем вызывает веб-API 2 (WebAPIOBO) и добавляет элемент в кэш.