Краткое руководство. ASP.NET веб-приложение, которое входит в систему пользователей Microsoft Entra
Добро пожаловать! Возможно, это не та страница, которую вы ожидали. Пока мы работаем над исправлением, воспользуйтесь этой ссылкой, чтобы перейти к нужной статье:
Краткое руководство. Добавление входа с помощью Корпорации Майкрософт в веб-приложение ASP.NET
Приносим извинения за неудобства и благодарим за терпение! Мы работаем над устранением этой проблемы.
В этом кратком руководстве вы скачайте и запустите пример кода, демонстрирующий ASP.NET веб-приложение, которое может выполнять вход пользователей с помощью учетных записей Microsoft Entra.
Шаг 1. Настройка приложения на портале Azure
Чтобы пример кода, приведенный в этом кратком руководстве, работал, введите https://localhost:44368/ в поле URI перенаправления.
Приложение настроено с помощью этого атрибута.
Шаг 2. Скачивание проекта
Запустите проект с помощью Visual Studio 2019.
Совет
Чтобы избежать ошибок, вызванных ограничениями длины пути в Windows, рекомендуется извлечь архив или клонировать репозиторий в каталог рядом с корневой папкой диска.
Шаг 3. Приложение настроено и готово к выполнению
Мы настроили проект, указав значения свойств приложения.
Извлеките ZIP-файл в локальный каталог рядом с корневым. Например, извлеките в C:\Azure-Samples.
Рекомендуется извлечь архив в каталог рядом с корнем диска, чтобы избежать ошибок, вызванных ограничениями длины пути в Windows.
Откройте решение в Visual Studio (AppModelv2-WebApp-OpenIDConnect-DotNet.sln).
В зависимости от версии Visual Studio может потребоваться щелкнуть правой кнопкой мыши проект >AppModelv2-WebApp-OpenIDConnect-DotNet и выбрать Восстановить пакеты NuGet.
Откройте консоль диспетчера пакетов, выбрав пункт Просмотр>Другие окна>Консоль диспетчера пакетов. Затем выполните
Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r
.
Примечание.
Enter_the_Supported_Account_Info_Here
Дополнительные сведения
В этом разделе представлен код, используемый для выполнения входа пользователей. Это может быть полезно для рассмотрения принципов работы кода и основных аргументов. Также вы поймете, нужно ли добавлять функцию входа в существующее приложение ASP.NET.
Как работает этот пример
Пакеты 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 вы найдете пошаговые инструкции по созданию приложений и функций, а также полное описание того, о чем говорится в этом кратком руководстве.