Краткое руководство. Веб-приложение ASP.NET Core, которое входит в систему пользователей и вызывает Microsoft Graph от их имени

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

Краткое руководство. Добавление входа с помощью Корпорации Майкрософт в веб-приложение ASP.NET Core

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

В этом кратком руководстве вы скачайте и запустите пример кода, демонстрирующий, как веб-приложение ASP.NET Core может выполнять вход пользователей из любой организации Microsoft Entra и вызывает Microsoft Graph.

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

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

Чтобы пример кода, приведенный в этом кратком руководстве, работал, добавьте URI перенаправленияhttps://localhost:44321/signin-oidc и >URL-адрес выхода Front-channelhttps://localhost:44321/signout-oidc в регистрации приложения.

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

Шаг 2. Скачивание проекта ASP.NET Core

Запустите проект.

Совет

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

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

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

Примечание.

Enter_the_Supported_Account_Info_Here

Примечания о коде

В этом разделе приведен обзор кода, необходимого для выполнения входа пользователей в систему и вызова API Microsoft Graph от их имени. В этом обзоре содержатся сведения о работе кода, основных аргументах, а также о добавлении входа в имеющееся приложение ASP.NET Core и вызове Microsoft Graph. В нем используется библиотека Microsoft.Identity.Web, являющаяся оболочкой для MSAL.NET.

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

Diagram that how the sample app generated by this quickstart works.

Класс Startup

ПО промежуточного слоя Microsoft.AspNetCore.Authentication использует класс Startup, который выполняется при инициализации хост-процесса:


  public void ConfigureServices(IServiceCollection services)
  {  
    // Get the scopes from the configuration (appsettings.json)
    var initialScopes = Configuration.GetValue<string>("DownstreamApi:Scopes")?.Split(' ');
  
      // Add sign-in with Microsoft
      services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
        .AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"))

            // Add the possibility of acquiring a token to call a protected web API
            .EnableTokenAcquisitionToCallDownstreamApi(initialScopes)

                // Enables controllers and pages to get GraphServiceClient by dependency injection
                // And use an in memory token cache
                .AddMicrosoftGraph(Configuration.GetSection("DownstreamApi"))
                .AddInMemoryTokenCaches();

      services.AddControllersWithViews(options =>
      {
          var policy = new AuthorizationPolicyBuilder()
              .RequireAuthenticatedUser()
              .Build();
          options.Filters.Add(new AuthorizeFilter(policy));
      });

      // Enables a UI and controller for sign in and sign out.
      services.AddRazorPages()
          .AddMicrosoftIdentityUI();
  }

Метод AddAuthentication() настраивает службу для добавления аутентификации на основе файлов cookie, которая используется при работе с браузером, и определения запроса для OpenID Connect.

Строка, содержащая .AddMicrosoftIdentityWebApp, добавляет в ваше приложение функцию аутентификации платформы удостоверений Майкрософт. Этот процесс выполняет Microsoft.Identity.Web. Затем она настраивается для входа с использованием платформы удостоверений Майкрософт на основе сведений в разделе AzureAD файла конфигурации appsettings.json:

Ключ appsettings.json Описание >
ClientId Идентификатор приложения (клиента), зарегистрированного на портале Azure.
Instance Конечная точка службы токенов безопасности для проверки подлинности пользователей. Обычно это значение https://login.microsoftonline.com/, указывающее на общедоступное облако Azure.
TenantId Имя клиента, идентификатор клиента (GUID) или общие пользователи с рабочими или учебными учетными записями или личными учетными записями Майкрософт.

Метод EnableTokenAcquisitionToCallDownstreamApi позволяет вашему приложению получить токен для вызова защищенных веб-API. AddMicrosoftGraph позволяет вашим контроллерам или страницам Razor напрямую использовать методы GraphServiceClient (путем внедрения зависимостей), а методы AddInMemoryTokenCaches позволяют вашему приложению воспользоваться преимуществами кэширования токенов.

Метод Configure() содержит два важных метода: app.UseAuthentication() и app.UseAuthorization(), которые обеспечивают упомянутые функциональные возможности. Кроме того, в методе Configure() необходимо зарегистрировать маршруты Microsoft Identity Web по крайней мере с одним вызовом endpoints.MapControllerRoute() или вызовом endpoints.MapControllers().

app.UseAuthentication();
app.UseAuthorization();

app.UseEndpoints(endpoints =>
{

    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
    endpoints.MapRazorPages();
});

// endpoints.MapControllers(); // REQUIRED if MapControllerRoute() isn't called.

Защита контроллера или метода контроллера

Вы можете защитить контроллер или его методы, применив атрибут [Authorize] к классу контроллера или одному/нескольким его методам. Этот атрибут [Authorize] ограничивает доступ, предоставляя его лишь пользователям, прошедшим проверку подлинности. Если пользователь еще не прошел проверку подлинности, для доступа к контроллеру может быть запущен запрос на проверку подлинности. В этом кратком руководстве области считываются из файла конфигурации:

[AuthorizeForScopes(ScopeKeySection = "DownstreamApi:Scopes")]
public async Task<IActionResult> Index()
{
    var user = await _graphServiceClient.Me.GetAsync();
    ViewData["ApiResult"] = user?.DisplayName;

    return View();
}

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

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

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

Репозиторий GitHub, содержащий пример кода ASP.NET Core, упомянутый в этом кратком руководстве, содержит также инструкции и дополнительные примеры кода для выполнения следующих операций:

  • Добавление проверки подлинности в новое веб-приложение ASP.NET Core
  • Вызов Microsoft Graph, других API Майкрософт или собственных веб-API
  • Добавление авторизации
  • Вход пользователей в национальные облака или вход с помощью удостоверений социальных сетей