Потоки проверки подлинности и сценарии приложений

Платформа удостоверений Майкрософт поддерживает проверку подлинности для разных типов архитектур современных приложений. Все эти архитектуры основаны на стандартных отраслевых протоколах OAuth 2.0 и OpenID Connect. С помощью библиотек проверки подлинности для платформы удостоверений Майкрософт приложения выполняют проверку подлинности удостоверений и получают маркеры для доступа к защищенным интерфейсам API.

В этой статье описываются потоки проверки подлинности и сценарии приложений, в которых они используются.

Категории приложений

Маркеры можно получить из приложений нескольких типов, включая следующие:

  • Веб-приложения
  • Мобильные приложения
  • Классические приложения
  • Веб-API

Маркеры также могут быть получены приложениями, которые работают на устройствах без браузера или в Интернете вещей (IoT).

В следующих разделах описаны категории приложений.

Защищенные ресурсы или клиентские приложения

Сценарии проверки подлинности предполагают два действия:

С пользователями или без пользователей

Большинство сценариев проверки подлинности получают маркеры от имени пользователей, выполнивших вход.

Сценарии взаимодействия с пользователями

Однако существуют также управляющие программы. В этих сценариях приложения получают маркеры от своего имени, без участия пользователя.

Сценарии с приложениями управляющей программы

Одностраничные приложения, общедоступные клиентские приложения или конфиденциальные клиентские приложения

Маркеры безопасности могут получать приложения многих типов. Их можно разделить на три следующие категории. Каждая из них используется с разными библиотеками и объектами.

  • Одностраничные приложения. Это веб-приложения, которые получают маркеры из приложения JavaScript или TypeScript, выполняющегося в браузере. Для многих современных приложений интерфейс реализован как одностраничное приложение, чаще всего на языке JavaScript. Для таких приложений часто применяются платформы Angular, React, Vue и др. MSAL.js — это единственная библиотека проверки подлинности Майкрософт, которая поддерживает одностраничные приложения.

  • Общедоступные клиентские приложения. Приложения в этой категории, например указанные ниже типы, всегда подразумевают вход пользователей:

    • Классические приложения, вызывающие веб-API от имени пользователей, выполнивших вход
    • Мобильные приложения
    • Приложения, которые выполняются на устройствах без браузера, например в Интернете вещей
  • Конфиденциальные клиентские приложения. Приложения этой категории включают:

    • Веб-приложения, вызывающие веб-API
    • Веб-API, вызывающие веб-API
    • приложения управляющей программы, даже если они реализованы как консольная служба (например, управляющая программа в Linux или служба Windows).

Аудитория для входа

Доступные потоки проверки подлинности зависят от аудитории входа. Некоторые потоки доступны только для рабочих или учебных учетных записей. Для других допустимы рабочие или учебные учетные записи и личные учетные записи Майкрософт.

Дополнительные сведения см. в статье Поддерживаемые типы учетных записей.

Сценарии приложений

Платформа удостоверений Майкрософт поддерживает проверку подлинности для этих архитектур приложений:

  • Одностраничные приложения
  • Веб-приложения
  • Веб-API
  • Мобильные приложения
  • Собственные приложения
  • Управляющие программы
  • Приложения серверной части

Приложения используют разные потоки проверки подлинности для входа пользователей и получения маркеров для вызова защищенных API.

Одностраничное приложение

Многие современные веб-приложения создаются как клиентские одностраничные приложения. В этих приложениях используется JavaScript или платформа, например Angular, Vue и React. Эти приложения выполняются в веб-браузере.

Одностраничные приложения отличаются от традиционных серверных веб-приложений своими характеристиками проверки подлинности. Использование платформы удостоверений Майкрософт позволяет одностраничным приложениям обрабатывать вход пользователей и получать маркеры для доступа к серверным службам или веб-API. Платформа удостоверений Майкрософт предусматривает два типа предоставления разрешений для приложений JavaScript:

MSAL.js (2.x) MSAL.js (1.x)
Одностраничное приложение — проверка подлинности Одностраничное приложения — неявное

Веб-приложение, которое обрабатывает вход пользователя

Веб-приложение, которое обрабатывает вход пользователя

Для защиты веб-приложения, которое обрабатывает вход пользователя, сделайте следующее.

  • Если вы ведете разработку в среде .NET, используйте ASP.NET или ASP.NET Core с ПО промежуточного слоя Open ID Connect ASP.NET. В этом случае защита ресурса включает проверку маркера безопасности, которая выполняется с помощью расширений IdentityModel для .NET, а не библиотек MSAL.

  • Если разработка ведется на языке Node.js, используйте узел MSAL.

См. сведения см. о веб-приложениях, которые обрабатывают вход пользователей.

Веб-приложение, которое поддерживает вход пользователя и вызывает веб-API от имени этого пользователя

Веб-приложение, которое вызывает веб-API

Чтобы вызвать веб-API из веб-приложения от имени пользователя, используйте поток кода авторизации и сохраните полученные токены в кэше маркеров. MSAL обновляет маркеры по мере необходимости, а контроллер прозрачно получает маркеры из кэша.

См. сведения о веб-приложении, которое вызывает веб-API.

Классическое приложение, которое вызывает веб-API от имени выполнившего вход пользователя

Чтобы вызвать веб-API из классического приложения, которое поддерживает вход пользователей, используйте интерактивные методы получения маркера MSAL. Эти интерактивные методы позволяют управлять интерфейсом входа пользователя в систему. Чтобы реализовать такое взаимодействие, MSAL использует веб-браузер.

Классическое приложение, которое вызывает веб-API

Для приложений, выполняющихся на компьютерах Windows, присоединенных к домену Windows или к Azure Active Directory, есть еще одна возможность. Эти приложения могут автоматически получать маркер, используя Встроенную проверку подлинности Windows.

Приложения на устройстве без браузера также могут вызывать API от имени пользователя. Для проверки подлинности пользователю нужно войти на другое устройство, где есть веб-браузер. Чтобы реализовать этот сценарий, нужно использовать поток кода устройства.

Поток кода устройства

Мы не рекомендуем использовать этот вариант, но для общедоступных клиентских приложений доступен поток имени пользователя и пароля. Этот поток пока еще необходим для некоторых сценариев, например при использовании DevOps.

Использование потока имени пользователя и пароля ограничивает ваши приложения. Например, приложения не могут обработать вход пользователя, который должен использовать многофакторную проверку подлинности или средство условного доступа в Azure AD. Также приложение не сможет использовать механизм единого входа. Аутентификация в потоке имени пользователя и пароля противоречит принципам современной проверки подлинности и поддерживается только для обеспечения совместимости со старыми технологиями.

Если вам нужно сохранять кэш маркеров в классическом приложении, вы можете настроить сериализацию кэша маркеров. Реализовав сериализацию сдвоенного кэша маркеров, вы сможете поддерживать обратную и прямую совместимость кэшей маркеров. Эти маркеры поддерживают предыдущие поколения библиотек проверки подлинности. Сюда относятся, среди прочего, библиотеки аутентификации Azure AD для .NET (ADAL.NET) версий 3 и 4.

См. сведения о классическом приложении, которое вызывает веб-API.

Мобильное приложение, которое вызывает веб-API от имени текущего пользователя

Как и в классических приложениях, для получения маркера для вызова веб-API мобильное приложение использует интерактивные методы получения маркера из MSAL.

Мобильное приложение, которое вызывает веб-API

MSAL для iOS и MSAL для Android по умолчанию используют системный веб-браузер. Но вы можете настроить для них использование встроенного веб-представления. Существуют особенности, зависящие от мобильной платформы: универсальная платформа Windows (UWP), iOS или Android.

В некоторых сценариях, например при использовании условного доступа с привязкой к идентификатору устройства или регистрации устройства, требуется установить на устройство брокер. К таким брокерам относятся корпоративный портал Майкрософт (на Android) и Microsoft Authenticator (Android и iOS). MSAL теперь умеет взаимодействовать с брокерами. Дополнительные сведения о брокерах см. в статье Использование брокеров в Android и iOS.

См. сведения о мобильных приложениях, которые вызывают веб-API.

Примечание

К мобильному приложению, которое использует MSAL.iOS, MSAL.Android или MSAL.NET на Xamarin, могут применяться политики защиты приложений. Например, политика может запретить пользователю копировать защищенный текст. Мобильным приложением управляет служба Intune, которая распознает его как управляемое приложение. Дополнительные сведения см. в статье Обзор пакета SDK для приложений Microsoft Intune.

Пакет SDK для приложений в Intune отделен от библиотек MSAL и самостоятельно взаимодействует с AAD.

Защищенный веб-API

Конечную точку платформы удостоверений Майкрософт можно использовать для защиты веб-служб, например API RESTful. Защищенный веб-API вызывается через маркер доступа. Маркер помогает защищать данные API и проводить проверку подлинности входящих запросов. Объект, вызывающий такой веб-API, добавляет маркер доступа в заголовок авторизации в HTTP-запросе.

Если вы хотите защитить веб-API ASP.NET или ASP.NET Core, проверяйте маркер доступа. Для такой проверки применяется ПО промежуточного слоя JWT для ASP.NET. Проверка выполняется с помощью расширений IdentityModel для библиотеки .NET, а не через MSAL.NET.

См. сведения о защищенных веб-API.

Веб-API, который вызывает другой веб-API от имени пользователя

Чтобы защищенный веб-API вызывал другой веб-API от имени пользователя, приложению нужно получить маркер для подчиненного веб-API. Такие вызовы иногда называются вызовами между службами. Веб-API, вызывающие другие веб-API, должны реализовать настраиваемую сериализацию кэша.

Веб-API, который вызывает другой веб-API

См. сведения о веб-API, которые вызывают веб-API.

Приложение управляющей программы, которое вызывает веб-API от имени управляющей программы

Приложениям, которые выполняют долговременные процессы или работают без взаимодействия с пользователем, также нужен метод доступа к защищенным веб-API. Эти приложения могут выполнять проверку подлинности и получать маркеры, используя удостоверение приложения. Приложение подтверждает свою идентификацию с помощью секрета или сертификата клиента.

Вы можете создавать такие управляющие программы, которые получают маркер для вызывающего приложения с помощью методов получения учетных данных клиента в MSAL. Для этих методов требуется секрет клиента, добавляемый в регистрацию приложения в Azure AD. Затем приложение передает этот секрет управляющей программе, которую оно вызывает. В качестве секретов могут использоваться пароли приложений, утверждение сертификата и утверждение клиента.

Приложение управляющей программы, к которому обращаются другие приложения и API

См. сведения об управляющих приложениях, которые вызывают веб-API.

Сценарии и поддерживаемые потоки проверки подлинности

Потоки проверки подлинности используются для реализации сценариев приложений, в которых запрашиваются маркеры. Между сценариями приложений и потоками проверки подлинности не существует строгого соответствия.

Сценарии, которые предусматривают получение маркеров, также сопоставляются с потоками проверки подлинности OAuth 2.0. Для получения дополнительных сведений см. статью Использование протоколов OAuth 2.0 и OpenID Connect на платформе удостоверений Майкрософт.

Сценарий Подробный разбор сценария Поток и предоставление разрешения OAuth 2.0 Аудитория
Одностраничное приложение с кодом проверки подлинности Одностраничное приложение Код авторизации с PKCE Рабочие или учебные учетные записи, личные учетные записи и Azure Active Directory B2C (Azure AD B2C)
Одностраничное приложение с неявным вариантом Одностраничное приложение Неявно Рабочие или учебные учетные записи, личные учетные записи и Azure Active Directory B2C (Azure AD B2C)
Веб-приложение, которое поддерживает вход пользователей Веб-приложение, которое поддерживает вход пользователей Код авторизации Рабочие или учебные учетные записи, личные учетные записи и Azure AD B2C
Веб-приложение, которое вызывает веб-API Веб-приложение, которое вызывает веб-API Код авторизации Рабочие или учебные учетные записи, личные учетные записи и Azure AD B2C
Классическое приложение, которое вызывает веб-API Классическое приложение, которое вызывает веб-API Интерактивный вход с использованием кода авторизации и PKCE Рабочие или учебные учетные записи, личные учетные записи и Azure AD B2C
Встроенная проверка подлинности Windows Рабочие или учебные учетные записи
Пароль владельца ресурса Рабочие или учебные учетные записи и Azure AD B2C
Приложение, работающее без браузера Код устройства Рабочие или учебные учетные записи, личные учетные записи, но не Azure AD B2C
Мобильное приложение, которое вызывает веб-API Мобильное приложение, которое вызывает веб-API Интерактивный вход с использованием кода авторизации и PKCE Рабочие или учебные учетные записи, личные учетные записи и Azure AD B2C
Пароль владельца ресурса Рабочие или учебные учетные записи и Azure AD B2C
Управляющая программа, которая вызывает веб-API Управляющая программа, которая вызывает веб-API Учетные данные клиента Разрешения только для приложений, которые используются без участия пользователей и только в организациях Azure AD
Веб-API, которые вызывают веб-API Веб-API, которые вызывают веб-API Вызов от имени Рабочие или учебные учетные записи и личные учетные записи

Сценарии, поддерживаемые платформы и языки

Библиотеки проверки подлинности Майкрософт поддерживают несколько платформ:

  • .NET Core
  • .NET Framework
  • Java
  • JavaScript
  • MacOS
  • Нативные приложения для Android
  • нативные приложения для iOS;
  • Node.js
  • Python
  • Windows 10/UWP
  • Xamarin.iOS
  • Xamarin.Android

Для создания приложений также можно использовать различные языки.

В приведенной ниже таблице в столбце Windows каждое упоминание .NET Core подразумевает и платформу .NET Framework. Мы опустили эти упоминания, чтобы не загромождать таблицу.

Сценарий Windows Linux Mac iOS Android
Одностраничное приложение
Проверка подлинности одностраничного приложения
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js MSAL.js MSAL.js
MSAL.js
Одностраничное приложение
Неявное одностраничное приложение
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js MSAL.js MSAL.js
MSAL.js
Веб-приложение, которое поддерживает вход пользователей
Веб-приложение, выполняющее вход пользователей
ASP.NET Core
ASP.NET Core MSAL Node
MSAL Node
ASP.NET Core
ASP.NET Core MSAL Node
MSAL Node
ASP.NET Core
ASP.NET Core MSAL Node
MSAL Node
Веб-приложение, которое вызывает веб-API

Веб-приложение, которое вызывает веб-API
ASP.NET Core
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
Flask + MSAL Python MSAL Node
MSAL Node
ASP.NET Core
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
Flask + MSAL Python MSAL Node
MSAL Node
ASP.NET Core
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
Flask + MSAL Python MSAL Node
MSAL Node
Классическое приложение, которое вызывает веб-API

Классическое приложение, которое вызывает веб-APIПоток кода устройства
.NET CoreMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL Node
.NET CoreMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL Node
.NET CoreMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python
MSAL Node
MSAL Node
iOS, Objective-C или swift MSAL.objc
Мобильное приложение, которое вызывает веб-API
Мобильное приложение, которое вызывает веб-API
UWP MSAL.NET Xamarin MSAL.NET iOS, Objective-C или swift MSAL.objc Android MSAL.Android
Управляющая программа
Управляющая программа
.NET CoreMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL Node
.NET Core MSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL Node
.NET CoreMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL Node
Веб-API, которые вызывают веб-API

Веб-API, которые вызывают веб-API
ASP.NET Core
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL Node
.NET Core
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL Node
.NET Core
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL Node

Дополнительные сведения см. в статье Библиотеки проверки подлинности на платформе удостоверений Майкрософт.

Дальнейшие действия

Дополнительные сведения о проверке подлинности см. в следующих статьях: