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

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

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

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

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

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

Чтобы пример кода, приведенный в этом кратком руководстве, работал, введите https://localhost:44368/ в поле URI перенаправления.

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

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

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

Совет

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

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

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

  1. Извлеките ZIP-файл в локальный каталог рядом с корневым. Например, извлеките в C:\Azure-Samples.

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

  2. Откройте решение в Visual Studio (AppModelv2-WebApp-OpenIDConnect-DotNet.sln).

  3. В зависимости от версии Visual Studio может потребоваться щелкнуть правой кнопкой мыши проект >AppModelv2-WebApp-OpenIDConnect-DotNet и выбрать Восстановить пакеты NuGet.

  4. Откройте консоль диспетчера пакетов, выбрав пункт Просмотр>Другие окна>Консоль диспетчера пакетов. Затем выполните Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r.

Примечание.

Enter_the_Supported_Account_Info_Here

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

В этом разделе представлен код, используемый для выполнения входа пользователей. Это может быть полезно для рассмотрения принципов работы кода и основных аргументов. Также вы поймете, нужно ли добавлять функцию входа в существующее приложение ASP.NET.

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

Diagram of the interaction between the web browser, the web app, and the Microsoft identity platform in the sample app.

Пакеты NuGet для ПО промежуточного слоя OWIN

Вы можете настроить конвейер проверки подлинности, используя проверку подлинности на основе файлов cookie, с помощью OpenID Connect в ASP.NET и пакетов ПО промежуточного слоя OWIN. Эти пакеты можно установить, выполнив в консоли диспетчера пакетов Visual Studio следующие команды:

Install-Package Microsoft.Owin.Security.OpenIdConnect
Install-Package Microsoft.Owin.Security.Cookies
Install-Package Microsoft.Owin.Host.SystemWeb

Класс Startup OWIN

ПО промежуточного слоя OWIN использует класс startup, выполняемый при запуске процесса размещения. В этом кратком руководстве используется файл startup.cs, расположенный в корневом каталоге. В следующем коде показан параметр, используемый в этом кратком руководстве:

public void Configuration(IAppBuilder app)
{
    app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

    app.UseCookieAuthentication(new CookieAuthenticationOptions());
    app.UseOpenIdConnectAuthentication(
        new OpenIdConnectAuthenticationOptions
        {
            // Sets the client ID, authority, and redirect URI as obtained from Web.config
            ClientId = clientId,
            Authority = authority,
            RedirectUri = redirectUri,
            // PostLogoutRedirectUri is the page that users will be redirected to after sign-out. In this case, it's using the home page
            PostLogoutRedirectUri = redirectUri,
            Scope = OpenIdConnectScope.OpenIdProfile,
            // ResponseType is set to request the code id_token, which contains basic information about the signed-in user
            ResponseType = OpenIdConnectResponseType.CodeIdToken,
            // ValidateIssuer set to false to allow personal and work accounts from any organization to sign in to your application
            // To only allow users from a single organization, set ValidateIssuer to true and the 'tenant' setting in Web.> config to the tenant name
            // To allow users from only a list of specific organizations, set ValidateIssuer to true and use the ValidIssuers parameter
            TokenValidationParameters = new TokenValidationParameters()
            {
                ValidateIssuer = false // Simplification (see note below)
            },
            // OpenIdConnectAuthenticationNotifications configures OWIN to send notification of failed authentications to > the OnAuthenticationFailed method
            Notifications = new OpenIdConnectAuthenticationNotifications
            {
                AuthenticationFailed = OnAuthenticationFailed
            }
        }
    );
}
Где Description
ClientId Идентификатор приложения, зарегистрированного на портале Azure.
Authority Конечная точка службы токенов безопасности для проверки подлинности пользователей. Для общедоступного облака это обычно https://login.microsoftonline.com/{tenant}/v2.0. В этом URL-адресе {tenant} — это имя вашего клиента, идентификатор вашего клиента или значение common для ссылки на общую конечную точку. (Общая конечная точка используется для мультитенантных приложений.)
RedirectUri URL-адрес, по которому пользователи переходят после проверки подлинности на платформе удостоверений Майкрософт.
PostLogoutRedirectUri URL-адрес, куда пользователи переходят после выхода.
Scope Список запрашиваемых областей, разделенных пробелами.
ResponseType Запрос на то, чтобы ответ от проверки подлинности содержал код авторизации и маркер идентификации.
TokenValidationParameters Список параметров для проверки маркеров. В этом случае для ValidateIssuer задано значение false, чтобы указать, что приложение может принимать операции входа под любыми типами личных, рабочих или учебных учетных записей.
Notifications Список делегатов, которые можно запускать для сообщений OpenIdConnect.

Примечание.

Параметр ValidateIssuer = false приводится в этом кратком руководстве для упрощения. В реальных приложениях нужно проверять издателя. См. примеры кода, чтобы узнать, как это сделать.

Запрос проверки подлинности

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

public void SignIn()
{
    if (!Request.IsAuthenticated)
    {
        HttpContext.GetOwinContext().Authentication.Challenge(
            new AuthenticationProperties{ RedirectUri = "/" },
            OpenIdConnectAuthenticationDefaults.AuthenticationType);
    }
}

Совет

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

Атрибут защиты контроллера или его действий

Контроллер или его действия можно защитить с помощью атрибута [Authorize]. Этот атрибут ограничивает доступ к контроллеру или действиям, разрешая доступ к действиям контроллера только пользователям, прошедшим проверку подлинности. После этого запрос на проверку подлинности будет выполняться автоматически, когда не прошедший проверку подлинности пользователь попытается получить доступ к одному из действий или контроллеров, обозначенных атрибутом [Authorize].

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

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

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

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