Краткое руководство: Вход пользователей и вызов Microsoft Graph в настольном приложении Windows
В этом кратком руководстве вы скачаете и запустите пример кода, демонстрирующий, как приложение Windows Presentation Foundation (WPF) может войти в систему и получить маркер доступа для вызова API Microsoft Graph. В настольном приложении, которое вы создаете, используется поток авторизации с кодом в сочетании со стандартом доказательства ключа для обмена кода (PKCE).
См. для иллюстрации, как работает пример.
Необходимые условия
- Visual Studio с установленной рабочей нагрузкой разработки для универсальной платформы Windows
Регистрация и скачивание приложения быстрого запуска
У вас есть два варианта запуска приложения быстрого запуска:
- [Express] вариант 1. Регистрация и автоматическая настройка приложения, а затем скачивание примера кода
- [Ручное] Опция 2: Зарегистрируйте и настройте вручную своё приложение и пример кода
Вариант 1. Регистрация и автоматическая настройка приложения, а затем скачивание примера кода
- Перейдите в центр администрирования Microsoft Entra — краткое руководство по регистрации приложений.
- Введите имя приложения и выберите Зарегистрировать.
- Следуйте инструкциям, чтобы скачать и автоматически настроить новое приложение с помощью одного щелчка мыши.
Вариант 2. Регистрация и настройка приложения и примера кода вручную
Шаг 1. Регистрация приложения
Чтобы зарегистрировать приложение и добавить сведения о регистрации приложения в решение вручную, выполните следующие действия.
- Войдите в Центр администрирования Microsoft Entra.
- Если у вас есть доступ к нескольким арендаторам, используйте значок Параметров
в верхнем меню, чтобы переключить на арендатора, в которой вы хотите зарегистрировать приложение из меню Каталогов и подписок.
- Перейдите к Идентификация>Приложения>Регистрация приложений, выберите Новая регистрация.
- Введите название для вашего приложения, например
Win-App-calling-MsGraph
. Пользователи приложения могут увидеть это имя, и вы можете изменить его позже. - В разделе поддерживаемых типов учетных записей выберите учетные записи в любом организационном каталоге и личные учетные записи Microsoft (например, Skype, Xbox, Outlook.com).
- Выберите «» и «», чтобы создать приложение.
- В разделе Управлениевыберите Аутентификация.
- Выберите Добавить платформу>для мобильных и настольных приложений.
- В разделе Перенаправление URI выберите
https://login.microsoftonline.com/common/oauth2/nativeclient
и в Пользовательские URI перенаправления добавьтеms-appx-web://microsoft.aad.brokerplugin/{client_id}
, где{client_id}
— это идентификатор приложения (клиента) вашего приложения (тот же GUID, который отображается в полеmsal{client_id}://auth
). - Выберите Настроить.
Шаг 2. Скачивание проекта
Совет
Чтобы избежать ошибок, вызванных ограничениями длины пути в Windows, рекомендуется извлечь архив или клонировать репозиторий в каталог рядом с корнем диска.
Шаг 3. Настройка проекта
Извлеките ZIP-файл в локальную папку рядом с корнем диска, например C:\Azure-Samples.
Откройте проект в Visual Studio.
Измените App.Xaml.cs и замените значения полей
ClientId
иTenant
следующим кодом:private static string ClientId = "Enter_the_Application_Id_here"; private static string Tenant = "Enter_the_Tenant_Info_Here";
Где:
Идентификатор
Enter_the_Application_Id_here
— это идентификатор клиента () для приложения, которое вы зарегистрировали.Чтобы найти значение идентификатора приложения(клиента), перейдите на страницу обзора приложения в Центре администрирования Microsoft Entra.
Enter_the_Tenant_Info_Here
— задано одно из следующих параметров:, Если ваше приложение поддерживает учетные записи в этом каталоге организации, замените это значение на идентификатор арендатора или имя арендатора (например, contoso.microsoft.com).
Если ваше приложение поддерживает учетные записи в любом каталоге организации , замените это значение
organizations
Если ваше приложение поддерживает учетные записи в любом каталоге организации и личные учетные записи Microsoft, замените это значение
common
.Чтобы найти значения идентификатора каталога (клиента) и Поддерживаемые типы учетных записей , перейдите в раздел Overview (Обзор) приложения в Центре администрирования Microsoft Entra.
Шаг 4. Запуск приложения
Чтобы создать и запустить пример приложения в Visual Studio, выберите меню отладки >начать отладкуили нажмите клавишу F5. Отображается главное окно вашего приложения.
Когда появится главное окно приложения, нажмите кнопку "Вызвать API Microsoft Graph". Вам будет предложено войти с помощью учетной записи Microsoft Entra (рабочей или учебной учетной записи) или учетных данных учетной записи Майкрософт (live.com, outlook.com).
Если приложение запущено в первый раз, вам будет предложено предоставить согласие на доступ к профилю пользователя и войти в систему. После предоставления согласия на запрошенные разрешения приложение отображает, что вы успешно вошли в систему. Вы увидите некоторые основные сведения о токене и данные пользователя, полученные из вызова API Microsoft Graph.
Дополнительные сведения
Принцип работы примера
MSAL.NET
MSAL (Microsoft.Identity.Client) — это библиотека, используемая для входа в систему пользователей и запроса токенов, используемых для доступа к API, защищенному платформой удостоверений Microsoft. Вы можете установить MSAL, выполнив следующую команду в консоли диспетчер а пакетов Visual Studio:
Install-Package Microsoft.Identity.Client -IncludePrerelease
Инициализация MSAL
Вы можете добавить ссылку для MSAL, добавив следующий код:
using Microsoft.Identity.Client;
Затем инициализировать MSAL с помощью следующего кода:
IPublicClientApplication publicClientApp = PublicClientApplicationBuilder.Create(ClientId)
.WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
.WithAuthority(AzureCloudInstance.AzurePublic, Tenant)
.Build();
Где: | Описание |
---|---|
ClientId |
Идентификатор приложения (клиента) для приложения, зарегистрированного в Центре администрирования Microsoft Entra. Это значение можно найти на странице обзора приложения в Центре администрирования Microsoft Entra. |
Запрос токенов
MSAL имеет два метода получения маркеров: AcquireTokenInteractive
и AcquireTokenSilent
.
Интерактивное получение токена пользователя
В некоторых ситуациях требуется принудительное взаимодействие пользователей с платформой удостоверений Майкрософт через всплывающее окно для проверки учетных данных или предоставления согласия. Ниже приведены некоторые примеры:
- При первом входе пользователей в приложение
- Если пользователям может потребоваться повторно отправить свои учетные данные, так как срок действия пароля истек.
- Когда приложение запрашивает доступ к ресурсу, которому пользователь должен предоставить согласие
- Если требуется двухфакторная проверка подлинности
authResult = await app.AcquireTokenInteractive(_scopes)
.ExecuteAsync();
Где: | Описание |
---|---|
_scopes |
Содержит запрашиваемые области, например { "user.read" } для Microsoft Graph или { "api://<Application ID>/access_as_user" } для пользовательских веб-API. |
Незаметное получение токена пользователя
Вам не нужно, чтобы пользователь проверял свои учетные данные каждый раз, когда им нужен доступ к ресурсу. Большую часть времени требуется получение и продление маркеров без участия пользователя. Метод AcquireTokenSilent
можно использовать для получения маркеров для доступа к защищенным ресурсам после первоначального метода AcquireTokenInteractive
:
var accounts = await app.GetAccountsAsync();
var firstAccount = accounts.FirstOrDefault();
authResult = await app.AcquireTokenSilent(scopes, firstAccount)
.ExecuteAsync();
Где: | Описание |
---|---|
scopes |
Содержит запрашиваемые области, например { "user.read" } для Microsoft Graph или { "api://<Application ID>/access_as_user" } для пользовательских веб-API. |
firstAccount |
Указывает первого пользователя в кэше (MSAL поддерживает несколько пользователей в одном приложении). |
Помощь и поддержка
Если вам нужна помощь, вы хотите сообщить о проблеме или узнать о вариантах поддержки, см. раздел справка и поддержка для разработчиков.
Дальнейшие действия
Попробуйте руководство по настольной версии Windows, чтобы получить полное руководство шаг за шагом по созданию приложений и новых функций, включая полное объяснение данного быстрого старта.