Краткое руководство: Вызов веб-API ASP.NET, защищенного платформой идентификации Microsoft
В следующем кратком руководстве используется пример кода, демонстрирующий защиту веб-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 как минимум в роли администратора облачных приложений.
Если у вас есть доступ к нескольким клиентам, используйте значок Настройки
в верхнем меню, чтобы переключиться на того клиента, в котором вы хотите зарегистрировать приложение, из меню Каталоги и подписки.
Перейдите к Идентификации>Приложениям>Регистрация приложений и выберите "Новая регистрация".
Введите имя для приложения, например
AppModelv2-NativeClient-DotNet-TodoListService
. Пользователи приложения могут увидеть это имя, и вы можете изменить его позже.Для поддерживаемых типов учетных записейвыберите Учетные записи в любой организационной директории.
Выберите Зарегистрировать, чтобы создать приложение.
На странице Обзор найдите значение идентификатора приложения (клиента) и затем запишите его для последующего использования. Вам потребуется настроить файл конфигурации Visual Studio для этого проекта (то есть
ClientId
в TodoListService\appsettings.jsв файле).В разделе Управлениевыберите Открыть интерфейс API>Добавить область. Примите предлагаемый URI идентификатора приложения (
api://{clientId}
), выбрав Сохранить и продолжить, а затем введите следующие сведения:- Для имени областивведите
access_as_user
. - Чтобы кто может предоставить согласие, убедитесь, что выбран параметр администраторов и пользователей.
- В поле "Отображаемое имя согласия администратора" введите
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
. - Для состояния оставьте включенным.
- Для имени областивведите
Выберите Добавить область.
Настройка проекта службы
Настройте проект службы, чтобы он соответствовал зарегистрированному веб-интерфейсу программирования приложений.
Откройте решение в Visual Studio и откройте файл appsettings.json в корне проекта TodoListService.
Замените значение
Enter_the_Application_Id_here
значением идентификатора клиента (идентификатора приложения) из приложения, зарегистрированного на портале регистрации приложений , как в свойствахClientID
, так и в свойствахAudience
.
Добавление новой области в файл app.config
Чтобы добавить новую область в файл TodoListClient app.config, выполните следующие действия:
В корневой папке проекта 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 как минимум в роли администратора облачных приложений.
Перейдите к Идентификация>Приложения>Регистрация приложений и выберите Новая регистрация.
Выберите Новая регистрация.
Когда откроется страница регистрации приложения, введите сведения о регистрации приложения:
- В разделе имени введите понятное имя приложения, которое будет отображаться пользователям приложения (например, NativeClient-DotNet-TodoListClient).
- Для поддерживаемых типов учетных записейвыберите учетные записи в любом каталоге организации.
- Выберите Зарегистрировать, чтобы создать приложение.
Заметка
В файле app.config проекта TodoListClient значение по умолчанию
ida:Tenant
имеет значениеcommon
. Возможные значения:-
common
. Вы можете войти с помощью рабочей или учебной учетной записи или личной учетной записи Майкрософт (так как вы выбрали учетные записи в любом каталоге организации на предыдущем шаге). -
organizations
. Вы можете войти с помощью рабочей или учебной учетной записи. -
consumers
. Вы можете войти только с помощью личной учетной записи Майкрософт.
На странице обзора приложения выберите Аутентификация, а затем выполните эти шаги, чтобы добавить платформу:
- В разделе Конфигурации платформынажмите кнопку Добавить платформу.
- Для мобильных и настольных приложенийвыберите мобильных и настольных приложений.
- Для URI перенаправленияустановите флажок
https://login.microsoftonline.com/common/oauth2/nativeclient
. - Выберите Настроить.
Выберите разрешения для API, а затем выполните следующие действия, чтобы добавить разрешения:
- Нажмите кнопку Добавить разрешение.
- Перейдите на вкладку "Мои API-интерфейсы".
- В списке API выберите AppModelv2-NativeClient-DotNet-TodoListService API или имя, введенное для веб-API.
- Установите флажок разрешения access_as_user, если он еще не установлен. При необходимости используйте поле поиска.
- Нажмите кнопку Добавить разрешения.
Настройка проекта
Настройте проект TodoListClient, добавив идентификатор приложения в файл app.config.
На портале регистрации приложений на странице Обзор скопируйте значение идентификатора приложения(клиента).
В корневой папке проекта TodoListClient откройте файл app.config, а затем вставьте значение идентификатора приложения в параметр
ida:ClientId
.
Запуск проектов
Запустите оба проекта. Для пользователей Visual Studio;
Щелкните правой кнопкой мыши решение Visual Studio и выберите Свойства
В общие свойства выберите запускаемый проект, а затем несколько запускаемых проектов.
Для обоих проектов в качестве действия выберите "Запуск"
Убедитесь, что служба TodoListService начинается сначала, переместив ее на первую позицию в списке, используя стрелку вверх.
Войдите, чтобы запустить проект TodoListClient.
Нажмите клавишу F5, чтобы запустить проекты. Откроется страница службы, а также настольное приложение.
В TodoListClient в правом верхнем углу выберите Войти, и затем войдите, используя те же учетные данные, которые вы использовали для регистрации приложения, или войдите в систему как пользователь из той же директории.
Если вы впервые вошли, вам может потребоваться предоставить согласие на веб-API TodoListService.
Чтобы получить доступ к веб-API TodoListService и управлять списком To-Do, при входе также запрашивается токен доступа для области 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:
Руководство по защищенному веб-API