Поделиться через


платформа удостоверений Майкрософт типы приложений и потоки проверки подлинности

Платформа удостоверений Майкрософт поддерживает проверку подлинности для разных типов архитектур современных приложений. Все эти архитектуры основаны на стандартных отраслевых протоколах 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, либо с помощью Microsoft Entra ID. Эти приложения могут автоматически получать маркер, используя Встроенную проверку подлинности Windows.

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

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

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

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

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

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

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

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

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

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

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

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

Примечание.

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

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

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

Конечную точку платформы идентификации Microsoft можно использовать для обеспечения безопасности веб-служб, таких как RESTful API вашего приложения. Защищенный веб-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. Для этих методов требуется секрет клиента, добавляемый к регистрации приложения в идентификаторе Microsoft Entra. Затем приложение передает этот секрет управляющей программе, которую оно вызывает. В качестве секретов могут использоваться пароли приложений, утверждение сертификата и утверждение клиента.

Приложение управляющей программы, к которому обращаются другие приложения и 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 Учетные данные клиента Разрешения только для приложений, которые не имеют пользователя и используются только в организациях Microsoft Entra
Веб-API, вызывающие другие веб-API Веб-API, вызывающие другие веб-API От имени Рабочие или учебные учетные записи и личные учетные записи

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

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

  • .NET
  • .NET Framework
  • Java
  • JavaScript
  • macOS
  • Нативный Android
  • Родное iOS
  • Node.js
  • Python

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

В столбце Windows следующей таблицы каждый раз, когда упоминается .NET, платформа .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 MSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL Node
.NET MSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL Node
.NET MSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python
MSAL Node
MSAL Node
iOS, Objective-C или swift MSAL.objc
Мобильное приложение, которое вызывает веб-API
Мобильное приложение, которое вызывает веб-API
UWP MSAL.NET iOS, Objective-C или swift MSAL.objc Android MSAL.Android
Демон-приложение
Управляющая программа
.NET MSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL Node
.NET MSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL Node
.NET MSAL.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
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL Node
.NET
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL Node

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

Следующие шаги

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