Краткое руководство. Вызов веб-API ASP.NET, защищенного с помощью платформы удостоверений Майкрософт
В следующем кратком руководстве используется пример кода, демонстрирующий защиту веб-API ASP.NET путем ограничения доступа к ресурсам только авторизованным учетным записям. Пример поддерживает авторизацию личных учетных записей Майкрософт и учетных записей в любой организации Microsoft Entra.
В статье также используется приложение Windows Presentation Foundation (WPF) для демонстрации того, как запросить маркер доступа для доступа к веб-API.
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Visual Studio 2022. Скачайте Visual Studio бесплатно.
Клонирование или скачивание примера
Пример кода можно получить двумя способами:
Клонировать его из оболочки или командной строки:
git clone https://github.com/AzureADQuickStarts/AppModelv2-NativeClient-DotNet.git
Совет
Чтобы избежать ошибок, вызванных ограничениями длины пути в Windows, рекомендуется извлечь архив или клонировать репозиторий в каталог рядом с корневой папкой диска.
Регистрация веб-API (TodoListService)
Совет
Действия, описанные в этой статье, могут немного отличаться на портале, с который вы начинаете работу.
Зарегистрируйте веб-API в разделе Регистрация приложений на портале Azure.
Войдите в Центр администрирования Microsoft Entra как минимум облачные приложения Администратор istrator.
Если у вас есть доступ к нескольким клиентам, используйте значок Параметры в верхнем меню, чтобы переключиться на клиент, в котором вы хотите зарегистрировать приложение из меню каталогов и подписок.
Перейдите к приложениям> удостоверений>Регистрация приложений и выберите "Создать регистрацию".
Введите имя приложения, например
AppModelv2-NativeClient-DotNet-TodoListService
. Пользователи приложения могут видеть это имя. Вы можете изменить его позже.Для параметра Поддерживаемые типы учетных записей выберите Учетные записи в любом каталоге организации.
Выберите Зарегистрировать, чтобы создать приложение.
На странице приложения Обзор найдите идентификатор приложения (клиента) и запишите его, чтобы использовать позже. Вам потребуется настроить файл конфигурации Visual Studio для этого проекта (то есть
ClientId
в файле TodoListService\appsettings.json ).В разделе Управление выберите Предоставление API>Добавить группу. Примите предложенный код URI идентификатора приложения (
api://{clientId}
), выбрав Сохранить и продолжить, а затем введите следующие сведения:- В поле Имя области введите
access_as_user
. - Убедитесь, что для параметра Кто может давать согласие выбран вариант Admins and users (Администраторы и пользователи).
- В поле Отображаемое имя согласия администратора введите
Access TodoListService as a user
. - В поле Описание согласия администратора введите
Accesses the TodoListService web API as a user
. - В поле Отображаемое имя согласия пользователя введите
Access TodoListService as a user
. - В поле Описание согласия пользователя введите
Accesses the TodoListService web API as a user
. - Для параметра Состояние оставьте значение Включено.
- В поле Имя области введите
Выберите Добавить область.
Настройка проекта службы
Настройте проект службы в соответствии с зарегистрированным веб-API.
Откройте решение в Visual Studio и откройте файл appsettings.json в корне проекта TodoListService.
Замените значение значения
Enter_the_Application_Id_here
идентификатора клиента (идентификатор приложения) из приложения, зарегистрированного на портале Регистрация приложений, как в свойствах, так и наClientID
порталеAudience
.
Добавление новой области в файл app.config
Чтобы добавить новую область в файл app.config проекта TodoListClient, выполните приведенные ниже действия.
В корневой папке проекта TodoListClient откройте файл app.config.
Вставьте идентификатор приложения из приложения, которое вы зарегистрировали для проекта TodoListService, в параметр
TodoListServiceScope
, заменив строку{Enter the Application ID of your TodoListService from the app registration portal}
.
Примечание.
Идентификатор приложения должен быть задан в следующем формате: api://{TodoListService-Application-ID}/access_as_user
(где {TodoListService-Application-ID}
— это GUID, представляющий идентификатор приложения для TodoListService).
Регистрация веб-приложения (TodoListClient)
Зарегистрируйте приложение TodoListClient в разделе Регистрация приложений на портале Azure, а затем настройте код в проекте TodoListClient. Если клиент и сервер считаются одним и тем же приложением, вы можете повторно использовать приложение, зарегистрированное на шаге 2. Если вы хотите, чтобы пользователи могли выполнять вход с помощью личных учетных записей Майкрософт, используйте то же приложение.
Регистрация приложения
Чтобы зарегистрировать приложение TodoListClient, выполните приведенные ниже действия.
Войдите в Центр администрирования Microsoft Entra как минимум облачные приложения Администратор istrator.
Перейдите к приложениям> удостоверений>Регистрация приложений и выберите "Создать регистрацию".
Выберите Создать регистрацию.
Когда откроется страница Регистрация приложения, введите сведения о регистрации приложения.
- В разделе Имя введите понятное имя приложения, которое будет отображаться пользователям приложения (например, NativeClient-DotNet-TodoListClient).
- Для параметра Поддерживаемые типы учетных записей выберите Учетные записи в любом каталоге организации.
- Выберите Зарегистрировать, чтобы создать приложение.
Примечание.
В файле app.config проекта TodoListClient в качестве значения по умолчанию для
ida:Tenant
заданоcommon
. Возможны следующие значения:common
. Вы можете войти с помощью рабочей или учебной учетной записи или личной учетной записи Майкрософт (так как на предыдущем шаге вы выбрали параметр Учетные записи в любом каталоге организации).organizations
: вы можете войти с помощью рабочей или учебной учетной записи.consumers
: вы можете войти только с помощью microsoft личная учетная запись.
На странице Обзор приложения выберите Проверка подлинности, а затем выполните приведенные ниже действия, чтобы добавить платформу.
- В разделе Конфигурации платформ нажмите кнопку Добавить платформу.
- Для параметра Мобильные и классические приложения выберите значение Мобильные и классические приложения.
- Для параметра URI перенаправления установите флажок
https://login.microsoftonline.com/common/oauth2/nativeclient
. - Выберите Настроить.
Выберите Разрешения API, а затем выполните приведенные ниже действия, чтобы добавить разрешения.
- Нажмите кнопку Добавить разрешение.
- Выберите вкладку Мои API.
- В списке интерфейсов API выберите ppModelv2-NativeClient-DotNet-TodoListService API или имя, введенное для веб-API.
- Установите флажок для разрешения access_as_user, если он еще не установлен. При необходимости используйте поле поиска.
- Нажмите кнопку Add permissions (Добавить разрешения).
Настройка проекта
Настройте проект TodoListClient, добавив идентификатор приложения в файл app.config.
На портале Регистрация приложений на странице Обзор скопируйте значение идентификатора приложения (клиента).
В корневой папке проекта TodoListClient откройте файл app.config и вставьте значение идентификатора приложения в параметр
ida:ClientId
.
Запуск проектов
Запустите оба проекта. Для пользователей Visual Studio;
Щелкните правой кнопкой мыши решение Visual Studio проект и выберите пункт Свойства.
В разделе Общие свойства выберите Запускаемый проект, затем Несколько запускаемых проектов.
Для обоих проектов выберите Запуск в качестве действия.
Убедитесь, что служба TodoListService начинается сначала, переместив ее на первую позицию в списке, используя стрелку вверх.
Выполните вход, чтобы запустить проект TodoListClient.
Нажмите F5 для запуска проектов. Откроется страница службы, а также классическое приложение.
В TodoListClient в верхнем правом углу выберите Войти и выполните вход с помощью тех же учетных данных, которые использовались для регистрации приложения, или войдите от имени пользователя в том же каталоге.
Если вы впервые входите в систему, вам может быть предложено дать согласие на использование веб-API TodoListService.
Для удобства доступа к веб-API TodoListService и работы со списком задач при входе также запрашивается маркер доступа к области access_as_user.
Предварительная авторизация клиентского приложения
Пользователям из других каталогов можно предоставить доступ к веб-API путем предварительной авторизации клиентского приложения для доступа к веб-API. Это можно сделать, добавив идентификатор приложения из клиентского приложения в список предварительно авторизованных приложений для веб-API. Добавив предварительно авторизованный клиент, вы разрешаете пользователям получать доступ к веб-API без предоставления согласия.
- На портале Регистрация приложений откройте свойства приложения TodoListService.
- В разделе Предоставление API в подразделе Авторизованные клиентские приложения выберите Добавить клиентское приложение.
- В поле Идентификатор клиента вставьте идентификатор приложения TodoListClient.
- В разделе Авторизованные области выберите область для веб-API
api://<Application ID>/access_as_user
. - Выберите Добавить приложение.
Запуск проекта
- Нажмите клавишу F5 для запуска проекта. Откроется приложение TodoListClient.
- В правом верхнем углу выберите Войти, а затем выполните вход с помощью личной учетной записи Майкрософт, например live.com или hotmail.com, рабочей или учебной учетной записи.
Необязательно. Ограничение доступа к входу определенным пользователям
По умолчанию любые личная учетная запись, такие как outlook.com или live.com учетные записи, рабочие или учебные учетные записи из организаций, интегрированных с идентификатором Microsoft Entra, могут запрашивать маркеры и получать доступ к веб-API.
Чтобы указать, кто может войти в приложение, измените TenantId
свойство в файле appsettings.json .
Справка и поддержка
Если вам нужна помощь, если вы хотите сообщить о проблеме или узнать о доступных вариантах поддержки, воспользуйтесь статьей Возможности получения поддержки и справки для разработчиков.
Следующие шаги
Дополнительные сведения см. в следующем руководстве по созданию защищенного веб-API ASP.NET Core: