Краткое руководство. Веб-приложение 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
в регистрации приложения.
Приложение настроено с помощью этих атрибутов.
Шаг 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.
Как работает этот пример
Класс 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
- Добавление авторизации
- Вход пользователей в национальные облака или вход с помощью удостоверений социальных сетей