Веб-приложение, которое реализует вход пользователей: конфигурация кода
Узнайте, как настроить код для веб-приложения, которое реализует вход пользователей.
Библиотеки Майкрософт, поддерживающие веб-приложения
Для защиты веб-приложения (и веб-API) используются следующие библиотеки Майкрософт:
Язык или платформа | Проект на сайте GitHub |
Пакет | Получение запущен |
Выполнение входа пользователей | Доступ к веб-API | Общедоступная версия (GA) или Общедоступная предварительная версия1 |
---|---|---|---|---|---|---|
.NET | MSAL.NET | Microsoft.Identity.Client | — | ![]() |
![]() |
GA |
.NET | Microsoft.IdentityModel | Microsoft.IdentityModel | — | ![]() |
![]() |
GA |
ASP.NET Core | ASP.NET Core | Microsoft.AspNetCore.Authentication | Краткое руководство | ![]() |
![]() |
GA |
ASP.NET Core | Microsoft.Identity.Web | Microsoft.Identity.Web | Краткое руководство | ![]() |
![]() |
GA |
Java | MSAL4J | msal4j | Краткое руководство | ![]() |
![]() |
GA |
Node.js | MSAL Node | msal-node | Краткое руководство | ![]() |
![]() |
GA |
Python | MSAL Python | msal | Краткое руководство | ![]() |
![]() |
GA |
1Дополнительные условия использования предварительных версий Microsoft Azure применяются к библиотекам в общедоступной предварительной версии.
2 Библиотека Microsoft.IdentityModel только проверяет маркеры и не может запрашивать идентификаторы или маркеры доступа.
Выберите вкладку, соответствующую интересующей вас платформе:
Фрагменты кода в этой и следующей статье извлекаются из пошагового руководства по веб-приложению ASP.NET Core, глава 1.
В этом руководстве представлены подробные сведения о реализации.
Файлы конфигурации.
Веб-приложения, реализующие вход пользователей с помощью платформы Microsoft Identity, настраиваются с помощью файлов конфигурации. Ниже приведены значения, которые необходимо указать в конфигурации.
- Облачный экземпляр (
Instance
), если приложение должно, к примеру, выполняться в национальных облаках. - Аудитория в идентификаторе клиента (
TenantId
). - Идентификатор клиента (
ClientId
) для приложения, соответствующий скопированному с портала Microsoft Azure.
Кроме того, могут отображаться ссылки на Authority
. Значение Authority
представляет собой объединение значений Instance
и TenantId
.
В ASP.NET Core эти параметры находятся в файле appsettings.json в разделе "AzureAd".
{
"AzureAd": {
// Azure cloud instance among:
// - "https://login.microsoftonline.com/" for Azure public cloud
// - "https://login.microsoftonline.us/" for Azure US government
// - "https://login.microsoftonline.de/" for Azure AD Germany
// - "https://login.partner.microsoftonline.cn/common" for Azure AD China operated by 21Vianet
"Instance": "https://login.microsoftonline.com/",
// Azure AD audience among:
// - "TenantId" as a GUID obtained from the Azure portal to sign in users in your organization
// - "organizations" to sign in users in any work or school account
// - "common" to sign in users with any work or school account or Microsoft personal account
// - "consumers" to sign in users with a Microsoft personal account only
"TenantId": "[Enter the tenantId here]",
// Client ID (application ID) obtained from the Azure portal
"ClientId": "[Enter the Client Id]",
"CallbackPath": "/signin-oidc",
"SignedOutCallbackPath": "/signout-oidc"
}
}
В ASP.NET Core другой файл (properties\launchSettings.json) contains the URL (applicationUrl
) and the TLS/SSL port (sslPort
) для приложения и разных профилей.
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:3110/",
"sslPort": 44321
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"webApp": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:3110/"
}
}
}
На портале Azure URI перенаправления, регистрируемые на странице Аутентификация приложения, должны соответствовать этим URL-адресам. Для двух предыдущих файлов конфигурации это будет https://localhost:44321/signin-oidc
. Причина в том, что этот applicationUrl
имеет значение http://localhost:3110
, но указан sslPort
(44321). CallbackPath
имеет значение /signin-oidc
, как определено в appsettings.json
.
Таким же образом для URI выхода будет задано значение https://localhost:44321/signout-oidc
.
Примечание
SignedOutCallbackPath должен вести к порталу или к приложению, чтобы избежать конфликта во время обработки события.
Код инициализации
Код инициализации может меняться в зависимости от платформы. Для ASP.NET Core и ASP.NET вход пользователей в систему делегируется программному обеспечению промежуточного слоя OpenID Connect. Шаблон ASP.NET или ASP.NET Core создает веб-приложения для конечной точки Azure Active Directory (Azure AD) версии 1.0. Для адаптации к платформе Microsoft Identity требуется определенная конфигурация. В случае Java обработку выполняет служба Spring совместно с приложением.
В веб-приложениях (и веб-API) ASP.NET Core приложение защищено, поскольку у вас есть атрибут [Authorize]
на контроллерах или в действиях контроллера. Этот атрибут проверяет, прошел ли пользователь проверку подлинности. Код, инициализирующий приложение, находится в файле Startup.cs.
Чтобы добавить проверку подлинности на платформе Microsoft Identity (прежнее название — Azure AD версии 2.0), необходимо добавить следующий код. Комментарии в коде должны быть описательными.
Примечание
Если надо начать непосредственно с новых шаблонов ASP.NET Core для платформы Microsoft Identity, использующих Microsoft.Identity.Web, можно загрузить предварительную версию пакета NuGet, содержащую шаблоны проектов для .NET Core 3.1 и .NET 5.0. После установки можно напрямую создать экземпляр веб-приложений ASP.NET Core (MVC или Blazor). Дополнительные сведения см. в статье Шаблоны проектов веб-приложений Microsoft.Identity.Web. Это простейший способ, поскольку все действия, описанные ниже, будут выполнены за вас.
Если вы предпочитаете запускать проект с текущим веб-проектом ASP.NET Core по умолчанию в Visual Studio или с помощью dotnet new mvc --auth SingleOrg
или dotnet new webapp --auth SingleOrg
, будет отображаться код, подобный следующему:
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
В этом коде используется устаревший пакет NuGet Microsoft.AspNetCore.Authentication.AzureAD.UI, который используется для создания приложения Azure AD версии 1.0. В этой статье приведены объяснения по созданию приложения платформы Microsoft Identity (Azure AD 2.0), заменяющего этот код.
Добавьте в проект пакеты NuGet Microsoft.Identity.Web и Microsoft.Identity.Web.UI. Удалите пакет NuGet Microsoft.AspNetCore.Authentication.AzureAD.UI, если он имеется.
Обновите код в
ConfigureServices
, чтобы он использовал методыAddMicrosoftIdentityWebAppAuthentication
иAddMicrosoftIdentityUI
.public class Startup { ... // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddMicrosoftIdentityWebAppAuthentication(Configuration, "AzureAd"); services.AddRazorPages().AddMvcOptions(options => { var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); options.Filters.Add(new AuthorizeFilter(policy)); }).AddMicrosoftIdentityUI();
В методе
Configure
в Startup.cs включите проверку подлинности с помощью обращения кapp.UseAuthentication();
.// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // more code here app.UseAuthentication(); app.UseAuthorization(); // more code here }
В приведенном выше коде:
AddMicrosoftIdentityWebAppAuthentication
Метод расширения определен в Microsoft.Identity.Web. Этот код выполняет нижеуказанные действия.- Добавляет службу аутентификации.
- Настраивает параметры для чтения файла конфигурации (здесь из раздела "AzureAD").
- Настраивает параметры OpenID Connect, чтобы центр сертификации был платформой Microsoft Identity.
- Проверяет издателя маркера.
- Гарантирует, что утверждения, соответствующие имени, сопоставлены с утверждением
preferred_username
маркере идентификации.
В дополнение к объекту конфигурации можно указать имя раздела конфигурации при вызове
AddMicrosoftIdentityWebAppAuthentication
. По умолчанию этоAzureAd
.AddMicrosoftIdentityWebAppAuthentication
имеет другие параметры для расширенных сценариев. Например, трассировка событий программного обеспечения промежуточного слоя OpenID Connect позволяет устранить неполадки в веб-приложении, если проверка подлинности не работает. При установке необязательного параметраsubscribeToOpenIdConnectMiddlewareDiagnosticsEvents
вtrue
будет показано, как обрабатывается информация набором программного обеспечения промежуточного слоя ASP.NET Core по мере перехода от HTTP-ответа к удостоверению пользователя вHttpContext.User
.Метод расширения
AddMicrosoftIdentityUI
определен в Microsoft.Identity.Web.UI. Он предоставляет контроллер по умолчанию для управления входом и выходом.
Дополнительные сведения о том, как Microsoft.Identity.Web обеспечивает создание приложений, см. под адресу https://aka.ms/ms-id-web/webapp
Дальнейшие действия
В следующей статье вы узнаете, как активировать вход и выход.
Перейдите к следующей статье в этом сценарии, Вход и выход.