Быстрый старт: Вызов веб-API, защищенного платформой идентификации Microsoft
применяется к: арендаторы рабочей силы
внешние клиенты (подробнее)
В этом кратком руководстве вы используете примерное веб-приложение, чтобы показать, как защитить веб-API ASP.NET с помощью платформы удостоверений Microsoft. В этом примере для обработки проверки подлинности используется библиотека проверки подлинности Майкрософт (MSAL).
Необходимые условия
- Учетная запись Azure с активной подпиской. Создайте аккаунт бесплатно.
- Visual Studio 2022. Скачайте Visual Studio бесплатно.
Регистрация приложения веб-API
Чтобы завершить регистрацию, укажите имя приложения и укажите поддерживаемые типы учетных записей. После регистрации, на странице обзора приложения отображаются идентификаторы, необходимые в исходном коде приложения.
Войдите в Центр администрирования Microsoft Entra в качестве как минимум одного разработчика приложений.
Если у вас есть доступ к нескольким клиентам, используйте значок
в верхнем меню, чтобы переключиться на клиента, в котором вы хотите зарегистрировать приложение из меню Директории + подписки.
Перейдите к идентификация>приложения>регистрация приложений.
Выберите Новая регистрация.
Введите имя для приложения, например NewWebAPI1.
Для поддерживаемых типов учетных записейвыберите учетные записи в этом каталоге организации только. Для получения сведений о различных типах учетных записей выберите Помощь в выборе.
Выберите Зарегистрировать.
При завершении регистрации отображается панель обзора приложения . Запишите идентификатор каталога (клиента) и идентификатор приложения (клиента), который будет использоваться в исходном коде приложения.
Заметка
Поддерживаемые типы учетных записей можно изменить, ссылаясь на Изменить учетные записи, поддерживаемые приложением.
Предоставление API
После регистрации API можно настроить его разрешение, определив области, предоставляемые API клиентским приложениям. Клиентские приложения запрашивают разрешение на выполнение операций, передав маркер доступа вместе с его запросами к защищенному веб-API. Затем веб-API выполняет запрошенную операцию только в том случае, если полученный маркер доступа содержит необходимые области.
В разделе Управлениевыберите Открыть 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
. - Для состояния держите включённым.
- Для имени областивведите
Выберите Добавить область.
Клонирование или скачивание примера приложения
Чтобы получить пример приложения, можно клонировать его из GitHub или скачать его в виде файла .zip.
git clone https://github.com/AzureADQuickStarts/AppModelv2-NativeClient-DotNet.git
совет
Чтобы избежать ошибок, вызванных ограничениями длины пути в Windows, рекомендуется извлечь архив или клонировать репозиторий в каталог рядом с корнем диска.
Настройка примера приложения
Настройте пример кода для сопоставления зарегистрированного веб-API.
Откройте решение в 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 как минимум в качестве администратора облачных приложений.
Перейдите к Identity>Приложения>Регистрация приложений и выберите Новый регистрация.
Выберите Новая регистрация.
Когда откроется страница регистрации приложения, введите сведения о регистрации приложения:
- В разделе Имя введите осмысленное имя приложения, которое будет отображаться пользователям (например, 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: