Краткое руководство. Вход пользователей и вызов API Microsoft Graph из веб-приложения ASP.NET
В этом кратком руководстве вы скачайте и запустите пример кода, демонстрирующий ASP.NET веб-приложение, которое может выполнять вход пользователей с помощью учетных записей Microsoft Entra.
Иллюстрацию см. в разделе Как работает этот пример.
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Visual Studio 2022 год
- .NET Framework 4.7.2 или более поздней версии
Регистрация и скачивание приложения
Совет
Действия, описанные в этой статье, могут немного отличаться на портале, с который вы начинаете работу.
Есть два варианта по созданию приложения: автоматическая или ручная настройка.
Автоматическая настройка
Если вы хотите автоматически настроить приложение, а затем скачать пример кода, выполните следующие действия.
- Войдите в краткое руководство по центру администрирования Microsoft Entra как минимум администратор облачных приложений.
- Введите имя приложения и нажмите кнопку Зарегистрировать.
- Следуйте инструкциям, чтобы скачать и автоматически настроить новое приложение одним щелчком мыши.
Настройка вручную
Если вы хотите вручную настроить приложение и пример кода, воспользуйтесь следующими процедурами.
Шаг 1. Регистрация приложения
- Войдите в Центр администрирования Microsoft Entra как минимум администратор облачных приложений.
- Если у вас есть доступ к нескольким клиентам, используйте значок "Параметры" в верхнем меню, чтобы переключиться на клиент, в котором вы хотите зарегистрировать приложение из меню каталогов и подписок.
- Перейдите к приложениям> удостоверений>Регистрация приложений и выберите "Создать регистрацию".
- В поле Имя введите имя для своего приложения. Например, введите ASPNET-Quickstart. Это имя будут видеть пользователи приложения. Вы сможете изменить его позже.
- В качестве типа URI перенаправления выберите Интернет и задайте значение
https://localhost:44368/
. - Выберите Зарегистрировать.
- В разделе Управление выберите Проверка подлинности.
- В разделе Неявное предоставление разрешения и гибридные потоки выберите Токены идентификатора.
- Выберите Сохранить.
Шаг 2. Скачивание проекта
Совет
Чтобы избежать ошибок, вызванных ограничениями длины пути в Windows, рекомендуется извлечь архив или клонировать репозиторий в каталог рядом с корневой папкой диска.
Шаг 3. Запуск проекта
Извлеките ZIP-файл в локальный каталог рядом с корневым. Например, извлеките в C:\Azure-Samples.
Рекомендуется извлечь архив в каталог рядом с корнем диска, чтобы избежать ошибок, вызванных ограничениями длины пути в Windows.
Откройте решение в Visual Studio (AppModelv2-WebApp-OpenIDConnect-DotNet.sln).
В зависимости от версии Visual Studio может потребоваться щелкнуть правой кнопкой мыши проект AppModelv2-WebApp-OpenIDConnect-DotNet и выбрать Восстановить пакеты NuGet.
Откройте консоль диспетчера пакетов, выбрав пункт Просмотр>Другие окна>Консоль диспетчера пакетов. Затем выполните
Update-Package
.Измените appsettings.json и замените параметры
ClientId
иTenant
redirectUri
следующим образом:"ClientId" :"Enter_the_Application_Id_here" /> "TenantId": "Enter_the_Tenant_Info_Here" /> "RedirectUri" :"https://localhost:44368/" />
В этом коде:
Enter_the_Application_Id_here
— это идентификатор приложения (клиента) для регистрации ранее созданного приложения. Найдите идентификатор приложения (клиента) на странице обзора приложения в Регистрация приложений в Центре администрирования Microsoft Entra.Enter_the_Tenant_Info_Here
является одним из следующих параметров:- Если ваше приложение поддерживает вариант Только моя организация, замените это значение на идентификатор каталога (клиента) или имя клиента (например,
contoso.onmicrosoft.com
). Найдите идентификатор каталога (клиента) на странице обзора приложения в Регистрация приложений в Центре администрирования Microsoft Entra. - Если приложение поддерживает вариант Учетные записи в любом каталоге организации, замените это значение на
organizations
. - Если приложение поддерживает вариант Все пользователи с учетными записями Майкрософт, замените это значение на
common
.
- Если ваше приложение поддерживает вариант Только моя организация, замените это значение на идентификатор каталога (клиента) или имя клиента (например,
redirectUri
— это URI перенаправления, введенный ранее в Регистрация приложений в Центре администрирования Microsoft Entra.
Дополнительные сведения
В этом разделе представлен код, используемый для выполнения входа пользователей. Это может быть полезно для рассмотрения принципов работы кода и основных аргументов. Также вы поймете, нужно ли добавлять функцию входа в существующее приложение ASP.NET.
Как работает этот пример
Пакеты NuGet для ПО промежуточного слоя OWIN
Вы можете настроить конвейер проверки подлинности, используя проверку подлинности на основе файлов cookie, с помощью OpenID Connect в ASP.NET и пакетов ПО промежуточного слоя OWIN. Эти пакеты можно установить, выполнив в консоли диспетчера пакетов Visual Studio следующие команды:
Install-Package Microsoft.Identity.Web.Owin
Install-Package Microsoft.Identity.Web.GraphServiceClient
Install-Package Microsoft.Owin.Security.Cookies
Класс Startup OWIN
ПО промежуточного слоя OWIN использует класс startup, выполняемый при запуске процесса размещения. В этом кратком руководстве используется файл startup.cs, расположенный в корневом каталоге. В следующем коде показан параметр, используемый в этом кратком руководстве:
public void Configuration(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
OwinTokenAcquirerFactory factory = TokenAcquirerFactory.GetDefaultInstance<OwinTokenAcquirerFactory>();
app.AddMicrosoftIdentityWebApp(factory);
factory.Services
.Configure<ConfidentialClientApplicationOptions>(options => { options.RedirectUri = "https://localhost:44368/"; })
.AddMicrosoftGraph()
.AddInMemoryTokenCaches();
factory.Build();
}
Где | 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 . |
Запрос проверки подлинности
Вы можете настроить принудительный вход пользователя, настроив запрос проверки подлинности в контроллере:
public void SignIn()
{
if (!Request.IsAuthenticated)
{
HttpContext.GetOwinContext().Authentication.Challenge(
new AuthenticationProperties{ RedirectUri = "/" },
OpenIdConnectAuthenticationDefaults.AuthenticationType);
}
}
Совет
Запрос проверки подлинности с помощью этого метода не является обязательным. Его обычно используют, если требуется, чтобы представление было доступно как для пользователей, которые прошли проверку подлинности, так и для тех, которые еще не прошли. Кроме того, можно защитить контроллеры, используя метод, описанный в следующем разделе.
Атрибут защиты контроллера или его действий
Контроллер или его действия можно защитить с помощью атрибута [Authorize]
. Этот атрибут ограничивает доступ к контроллеру или действиям, разрешая доступ к действиям контроллера только пользователям, прошедшим проверку подлинности. После этого запрос на проверку подлинности будет выполняться автоматически, когда не прошедший проверку подлинности пользователь попытается получить доступ к одному из действий или контроллеров, обозначенных атрибутом [Authorize]
.
Вызов Microsoft Graph из контроллера
Вы можете вызвать Microsoft Graph из контроллера, получив экземпляр GraphServiceClient с помощью GetGraphServiceClient
метода расширения на контроллере, как показано в следующем коде:
try
{
var me = await this.GetGraphServiceClient().Me.GetAsync();
ViewBag.Username = me.DisplayName;
}
catch (ServiceException graphEx) when (graphEx.InnerException is MicrosoftIdentityWebChallengeUserException)
{
HttpContext.GetOwinContext().Authentication.Challenge(OpenIdConnectAuthenticationDefaults.AuthenticationType);
return View();
}
Справка и поддержка
Если вам нужна помощь, если вы хотите сообщить о проблеме или узнать о доступных вариантах поддержки, воспользуйтесь статьей Возможности получения поддержки и справки для разработчиков.
Следующие шаги
В руководстве по ASP.NET вы найдете пошаговые инструкции по созданию приложений и функций, а также полное описание того, о чем говорится в этом кратком руководстве.