Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применяется к:
Клиенты рабочей силы (дополнительные сведения)
В этой статье описывается, как настроить код для веб-приложения, выполняющего вход пользователей.
Предпосылки
- Учетная запись Azure с активной подпиской.
Создайте учетную запись бесплатно . Эта учетная запись должна иметь разрешения на управление приложениями. Используйте любую из следующих ролей, необходимых для регистрации приложения:
- Администратор приложений
- Разработчик приложения
- Зарегистрируйте новое приложение в Центре администрирования Microsoft Entra, настроенное только для учетных записей в этом каталоге организации. Дополнительные сведения см. в статье "Регистрация приложения ". Запишите следующие значения на странице обзора приложения для последующего использования:
- Идентификатор приложения (клиента)
- Идентификатор каталога (арендатора)
- Настройте URI перенаправления для вашего приложения. Используйте вкладки ниже, чтобы найти URI перенаправления для вашей платформы. Для некоторых может потребоваться также настроить секрет клиента. Дополнительные сведения см. в статье о добавлении URI перенаправления в приложение .
Выберите тип веб-платформы и используйте следующие URI для веб-приложения ASP.NET Core
-
URI перенаправления :
https://localhost:44321/signin-oidc -
Адрес выхода через фронтальный канал :
https://localhost:44321/signout-oidc
Библиотеки Майкрософт, поддерживающие веб-приложения
Для защиты веб-приложения (и веб-API) используются следующие библиотеки Майкрософт:
| Язык или платформа | Проект на сайте GitHub |
Пакет | Получение начато |
Войти пользователям | Доступ к веб-API | Общедоступная версия (GA) или Общедоступная предварительная версия1 |
|---|---|---|---|---|---|---|
| .СЕТЬ | MSAL.NET | Microsoft.Identity.Client | — |
|
|
Общедоступная версия |
| .СЕТЬ | Microsoft.IdentityModel | Microsoft.IdentityModel | — |
2 |
2 |
Общедоступная версия |
| ASP.NET Core | Microsoft.Identity.Web | Microsoft.Identity.Web | Краткое руководство |
|
|
Общедоступная версия |
| Ява | MSAL4J | msal4j | Краткое руководство |
|
|
Общедоступная версия |
| Весна | spring-cloud-azure-starter-active-directory | spring-cloud-azure-starter-active-directory | Руководство |
|
|
Общедоступная версия |
| Node.js | Узел MSAL | msal-node | Краткое руководство |
|
|
Общедоступная версия |
| Питон | MSAL Python | msal | — |
|
|
Общедоступная версия |
| Питон | идентичность | идентичность | Краткое руководство |
|
|
-- |
(1)Условия универсального лицензионного соглашения для веб-служб применяются к библиотекам в общедоступной предварительной версии.
(2)Библиотека Microsoft.IdentityModel проверяет только маркеры. Он не может запрашивать идентификатор или маркеры доступа.
Выберите вкладку, соответствующую интересующей вас платформе:
Фрагменты кода в этой и следующей статье извлекаются из пошагового руководства по веб-приложению ASP.NET Core, глава 1.
В этом руководстве представлены подробные сведения о реализации.
Файлы конфигурации
Веб-приложения, реализующие вход пользователей с помощью платформы Microsoft Identity, настраиваются с помощью файлов конфигурации. Эти файлы должны указывать следующие значения:
-
Облачный экземпляр, если вы хотите, чтобы ваше приложение выполнялось в национальных облаках, например. К разным параметрам относятся;
-
https://login.microsoftonline.com/для общедоступного облака Azure -
https://login.microsoftonline.us/для Azure для правительства США -
https://login.microsoftonline.de/для Microsoft Entra Germany -
https://login.partner.microsoftonline.cn/commonдля Microsoft Entra China, управляемой 21Vianet
-
- Аудитория в идентификаторе клиента. Параметры зависят от того, является ли ваше приложение одноарендаторным или мультитенантным.
- GUID клиента, полученный из портал Azure для входа пользователей в организации. Вы также можете использовать доменное имя.
-
organizationsвход пользователей в любой рабочей или учебной учетной записи -
commonвход пользователей с помощью рабочей или учебной учетной записи или Microsoft личная учетная запись -
consumersвход пользователей только с помощью личная учетная запись Майкрософт
- Идентификатор клиента приложения, скопированный из портал Azure
Вы также можете увидеть ссылки на авторитет, конкатенацию значений экземпляра и идентификатора арендатора.
В ASP.NET Core эти параметры находятся в файле appsettings.json в разделе "Идентификатор Microsoft Entra".
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "[Enter the tenantId here]",
// Client ID (application ID) obtained from the Azure portal
"ClientId": "[Enter the Client Id here]",
"CallbackPath": "/signin-oidc",
"SignedOutCallbackPath": "/signout-oidc"
}
}
В ASP.NET Core другой файл (properties\launchSettings.json) содержит URL (applicationUrl) и порт TLS/SSL (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. Причина заключается в том, что applicationUrlhttp://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 AD версии 1.0. Для адаптации к платформе Microsoft Identity требуется определенная конфигурация.
В веб-приложениях (и веб-API) ASP.NET Core приложение защищено, поскольку у вас есть атрибут Authorize на контроллерах или в действиях контроллера. Этот атрибут проверяет, прошел ли пользователь проверку подлинности. До выпуска .NET 6 инициализация кода была в файле Startup.cs . В новых проектах ASP.NET Core с .NET 6 файла Startup.cs больше нет. Вместо него используется файл Program.cs. Остальная часть этого учебника относится к .NET 5 или более ранней версии.
Примечание.
Если вы хотите начать непосредственно с новых шаблонов ASP.NET Core для платформа удостоверений Майкрософт, использующих Microsoft.Identity.Web, можно скачать предварительный просмотр пакета NuGet, содержащего шаблоны проектов для .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 Active Directory версии 1.0. В этой статье объясняется, как создать приложение платформа удостоверений Майкрософт версии 2.0, которое заменяет этот код.
Добавьте в проект пакеты NuGet Microsoft.Identity.Web и Microsoft.Identity.Web.UI.
Microsoft.AspNetCore.Authentication.AzureAD.UIУдалите пакет NuGet, если он присутствует.Обновите код в
ConfigureServices, чтобы он использовал методыAddMicrosoftIdentityWebAppи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.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApp(Configuration, "AzureAd"); services.AddRazorPages().AddMvcOptions(options => { var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); options.Filters.Add(new AuthorizeFilter(policy)); }).AddMicrosoftIdentityUI();В методе
Configureв Startup.cs включите проверку подлинности с помощью вызова кapp.UseAuthentication();иapp.MapControllers();.// 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(); app.MapRazorPages(); app.MapControllers(); // more code here }
В этом коде:
Метод
AddMicrosoftIdentityWebAppрасширения определен в Microsoft.Identity.Web, который;- Настраивает параметры для чтения конфигурационного файла (из раздела "Microsoft Entra ID")
- Настраивает параметры OpenID Connect так, чтобы авторитетом была платформа идентификации Microsoft.
- Проверяет издателя токена.
- Гарантирует, что утверждения, соответствующие имени, сопоставлены с утверждением в
preferred_usernameмаркере идентификации.
В дополнение к объекту конфигурации можно указать имя раздела конфигурации при вызове
AddMicrosoftIdentityWebApp. По умолчанию этоAzureAd.AddMicrosoftIdentityWebAppимеет другие параметры для расширенных сценариев. Например, трассировка событий программного обеспечения промежуточного слоя OpenID Connect позволяет устранить неполадки в веб-приложении, если проверка подлинности не работает. При установке необязательного параметраsubscribeToOpenIdConnectMiddlewareDiagnosticsEventsвtrueбудет показано, как обрабатывается информация набором программного обеспечения промежуточного слоя ASP.NET Core по мере перехода от HTTP-ответа к удостоверению пользователя вHttpContext.User.Метод расширения
AddMicrosoftIdentityUIопределен в Microsoft.Identity.Web.UI. Он предоставляет контроллер по умолчанию для управления входом и выходом.
Дополнительные сведения о том, как создавать веб-приложения с помощью Microsoft.Identity.Web, см. в разделе Веб-приложения в microsoft-identity-web.