Краткое руководство. Получение маркера безопасности и вызов API Microsoft Graph из классического приложения Windows

Добро пожаловать! Возможно, это не та страница, которую вы ожидали. Пока мы работаем над исправлением, воспользуйтесь этой ссылкой, чтобы перейти к нужной статье:

Краткое руководство. Вход пользователей и вызов Microsoft Graph в классическом приложении Windows

Приносим извинения за неудобства и благодарим за терпение! Мы работаем над устранением этой проблемы.

Из этого краткого руководства вы узнаете, как скачать и выполнить пример кода. В примере кода показано, как в приложении Windows Presentation Foundation (WPF) реализовать вход пользователей и получение маркера доступа для вызова API Microsoft Graph.

Иллюстрацию см. в разделе Как работает этот пример.

Шаг 1. Настройка приложения на портале Azure

Чтобы пример кода, приведенный в этом кратком руководстве, работал, добавьте URI перенаправленияhttps://login.microsoftonline.com/common/oauth2/nativeclient и ms-appx-web://microsoft.aad.brokerplugin/{client_id}.

Already configured Приложение настроено с помощью этих атрибутов.

Шаг 2. Загрузка проекта Visual Studio

Запустите проект с помощью Visual Studio 2019.

Совет

Чтобы избежать ошибок, вызванных ограничениями длины пути в Windows, рекомендуется извлечь архив или клонировать репозиторий в каталог рядом с корневой папкой диска.

Шаг 3. Приложение настроено и готово к выполнению

Мы уже настроили для проекта нужные значения свойств приложения, и его можно запускать.

Примечание.

Enter_the_Supported_Account_Info_Here

Дополнительные сведения

Как работает этот пример

Shows how the sample app generated by this quickstart works

MSAL.NET

MSAL (Microsoft.Identity.Client) — это библиотека, используемая для выполнения входа пользователей и запросов маркеров, которые нужны для доступа к API, защищенному платформой удостоверений Майкрософт. 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();
Где: Description
ClientId Идентификатор приложения (клиента), зарегистрированного на портале Azure. Это значение можно найти на странице приложения Обзор на портале Azure.

Запрос маркеров

В MSAL есть два метода получения маркеров: AcquireTokenInteractive и AcquireTokenSilent.

Интерактивное получение маркера

В некоторых ситуациях необходимо принудительное взаимодействие пользователя с платформой удостоверений Майкрософт через всплывающее окно, чтобы подтвердить учетные данные или предоставить согласие. Некоторыми примерами могут служить:

  • первый вход пользователей в приложение;
  • когда пользователям может потребоваться повторно ввести учетные данные, так как истек срок действия пароля;
  • когда ваше приложение запрашивает доступ к ресурсу, на обращение к которому пользователь должен дать согласие.
  • когда требуется двухфакторная проверка подлинности.
authResult = await App.PublicClientApp.AcquireTokenInteractive(_scopes)
                                      .ExecuteAsync();
Где: Description
_scopes Содержит запрашиваемые области, такие как { "user.read" } для Microsoft Graph или { "api://<Application ID>/access_as_user" } для пользовательских веб-API.

Автоматическое получение маркера пользователя

Вы не хотите требовать от пользователя проверки своих учетных данных каждый раз, когда ему необходимо получить доступ к ресурсу. Большую часть времени вы хотите приобретать и обновлять маркеры без какого-либо взаимодействия с пользователем. Можно использовать метод AcquireTokenSilent, чтобы получить маркеры безопасности для доступа к защищенным ресурсам после первоначального метода AcquireTokenInteractive:

var accounts = await App.PublicClientApp.GetAccountsAsync();
var firstAccount = accounts.FirstOrDefault();
authResult = await App.PublicClientApp.AcquireTokenSilent(scopes, firstAccount)
                                      .ExecuteAsync();
Где: Description
scopes Содержит запрашиваемые области, такие как { "user.read" } для Microsoft Graph или { "api://<Application ID>/access_as_user" } для пользовательских веб-API.
firstAccount Указывает первого пользователя в кэше (MSAL поддерживает нескольких пользователей в одном приложении).

Справка и поддержка

Если вам нужна помощь, если вы хотите сообщить о проблеме или узнать о доступных вариантах поддержки, воспользуйтесь статьей Возможности получения поддержки и справки для разработчиков.

Следующие шаги

В руководстве по классическому приложению Windows вы найдете пошаговые инструкции по созданию приложений и компонентов, в том числе полное описание того, о чем говорится в этом кратком руководстве.