платформа удостоверений Майкрософт типы приложений и потоки проверки подлинности
Платформа удостоверений Майкрософт поддерживает проверку подлинности для разных типов архитектур современных приложений. Все эти архитектуры основаны на стандартных отраслевых протоколах OAuth 2.0 и OpenID Connect. С помощью библиотек проверки подлинности для платформы удостоверений Майкрософт приложения выполняют проверку подлинности удостоверений и получают маркеры для доступа к защищенным интерфейсам API.
В этой статье описываются потоки проверки подлинности и сценарии приложений, в которых они используются.
Категории приложений
Маркеры безопасности можно получить из нескольких типов приложений, в том числе:
- Веб-приложения
- Мобильные приложения
- Классические приложения
- Веб-API
Маркеры также могут быть получены приложениями, которые работают на устройствах без браузера или в Интернете вещей (IoT).
В следующих разделах описаны категории приложений.
Защищенные ресурсы или клиентские приложения
Сценарии проверки подлинности предполагают два действия:
- Получение маркеров безопасности для защищенного веб-API. Рекомендуется использовать библиотеку проверки подлинности Майкрософт (MSAL), разработанную и поддерживаемую корпорацией Майкрософт.
- Защита веб-API или веб-приложения. Одной из проблем при защите этих ресурсов является проверка маркера безопасности. Для некоторых платформ корпорация Майкрософт предоставляет библиотеки ПО промежуточного слоя.
С пользователями или без пользователей
Большинство сценариев проверки подлинности получают маркеры от имени пользователей, выполнивших вход.
Однако существуют также управляющие программы. В этих сценариях приложения получают маркеры от своего имени, без участия пользователя.
Одностраничные приложения, общедоступные клиентские приложения или конфиденциальные клиентские приложения
Маркеры безопасности могут получать приложения многих типов. Их можно разделить на три следующие категории. Каждая из них используется с разными библиотеками и объектами.
Одностраничные приложения. Это веб-приложения, которые получают маркеры из приложения 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 из веб-приложения от имени пользователя, используйте поток кода авторизации и сохраните полученные токены в кэше маркеров. MSAL обновляет маркеры по мере необходимости, а контроллер прозрачно получает маркеры из кэша.
См. сведения о веб-приложении, которое вызывает веб-API.
Классическое приложение, которое вызывает веб-API от имени выполнившего вход пользователя
Чтобы вызвать веб-API из классического приложения, которое поддерживает вход пользователей, используйте интерактивные методы получения маркера MSAL. Эти интерактивные методы позволяют управлять интерфейсом входа пользователя в систему. Чтобы реализовать такое взаимодействие, MSAL использует веб-браузер.
Существует еще одна возможность для приложений, размещенных в Windows, на компьютерах, присоединенных к домену Windows или идентификатором Microsoft Entra. Эти приложения могут автоматически получать маркер, используя Встроенную проверку подлинности Windows.
Приложения на устройстве без браузера также могут вызывать API от имени пользователя. Для проверки подлинности пользователю нужно войти на другое устройство, где есть веб-браузер. Чтобы реализовать этот сценарий, нужно использовать поток кода устройства.
Мы не рекомендуем использовать этот вариант, но для общедоступных клиентских приложений доступен поток имени пользователя и пароля. Этот поток пока еще необходим для некоторых сценариев, например при использовании DevOps.
Использование потока имени пользователя и пароля ограничивает ваши приложения. Например, приложения не могут войти в систему пользователя, который должен использовать многофакторную проверку подлинности или средство условного доступа в идентификаторе Microsoft Entra. Также приложение не сможет использовать механизм единого входа. Аутентификация в потоке имени пользователя и пароля противоречит принципам современной проверки подлинности и поддерживается только для обеспечения совместимости со старыми технологиями.
Если вам нужно сохранять кэш маркеров в классическом приложении, вы можете настроить сериализацию кэша маркеров. Реализовав сериализацию сдвоенного кэша маркеров, вы сможете поддерживать обратную и прямую совместимость кэшей маркеров.
См. сведения о классическом приложении, которое вызывает веб-API.
Мобильное приложение, которое вызывает веб-API от имени текущего пользователя
Как и в классических приложениях, для получения маркера для вызова веб-API мобильное приложение использует интерактивные методы получения маркера из MSAL.
MSAL для iOS и MSAL для Android по умолчанию используют системный веб-браузер. Но вы можете настроить для них использование встроенного веб-представления. Существуют особенности, зависящие от мобильной платформы: универсальная платформа Windows (UWP), iOS или Android.
В некоторых сценариях, например при использовании условного доступа с привязкой к идентификатору устройства или регистрации устройства, требуется установить на устройство брокер. К таким брокерам относятся корпоративный портал Майкрософт (на Android) и Microsoft Authenticator (Android и iOS).
См. сведения о мобильных приложениях, которые вызывают веб-API.
Примечание.
Мобильное приложение, использующее MSAL iOS или MSAL Android, может применять к нему политики защиты приложений. Например, политика может запретить пользователю копировать защищенный текст. Мобильным приложением управляет служба Intune, которая распознает его как управляемое приложение. Дополнительные сведения см. в статье Обзор пакета SDK для приложений Microsoft Intune.
Пакет SDK для приложений Intune отделен от библиотек MSAL и взаимодействует с идентификатором Microsoft Entra самостоятельно.
Защищенный веб-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. Эти приложения могут выполнять проверку подлинности и получать маркеры, используя удостоверение приложения. Приложение подтверждает свою идентификацию с помощью секрета или сертификата клиента.
Вы можете создавать такие управляющие программы, которые получают маркер для вызывающего приложения с помощью методов получения учетных данных клиента в MSAL. Для этих методов требуется секрет клиента, добавляемый к регистрации приложения в идентификаторе Microsoft Entra. Затем приложение передает этот секрет управляющей программе, которую оно вызывает. В качестве секретов могут использоваться пароли приложений, утверждение сертификата и утверждение клиента.
См. сведения об управляющих приложениях, которые вызывают веб-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 | Код авторизации | Рабочие или учебные учетные записи, личные учетные записи и Azure AD B2C | |
Классическое приложение, которое вызывает веб-API | Интерактивный вход с использованием кода авторизации и PKCE | Рабочие или учебные учетные записи, личные учетные записи и Azure AD B2C | |
Встроенная проверка подлинности Windows | Рабочие или учебные учетные записи | ||
Пароль владельца ресурса | Рабочие или учебные учетные записи и Azure AD B2C | ||
Приложение без браузера | Код устройства | Рабочие или учебные учетные записи, личные учетные записи, но не Azure AD B2C | |
Мобильное приложение, которое вызывает веб-API | Интерактивный вход с использованием кода авторизации и PKCE | Рабочие или учебные учетные записи, личные учетные записи и Azure AD B2C | |
Пароль владельца ресурса | Рабочие или учебные учетные записи и Azure AD B2C | ||
Управляющая программа, которая вызывает веб-API | Учетные данные клиента | Разрешения только для приложений, которые не имеют пользователя и используются только в организациях Microsoft Entra | |
Веб-API, которые вызывают веб-API | On-behalf-of | Рабочие или учебные учетные записи и личные учетные записи |
Сценарии, поддерживаемые платформы и языки
Библиотеки проверки подлинности Майкрософт поддерживают несколько платформ:
- .NET
- .NET Framework
- Java
- JavaScript
- macOS
- Android (собственная)
- Системное, iOS
- Node.js
- Python
- Windows 10/UWP
Для создания приложений также можно использовать различные языки.
В столбце 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 |
Веб-приложение, которое поддерживает вход пользователей |
ASP.NET Core MSAL Node |
ASP.NET Core MSAL Node |
ASP.NET Core MSAL Node |
||
Веб-приложение, которое вызывает веб-API |
ASP.NET Core + MSAL.NET MSAL Java Flask + MSAL Python MSAL Node |
ASP.NET Core + MSAL.NET MSAL Java Flask + MSAL Python MSAL Node |
ASP.NET Core + MSAL.NET MSAL Java Flask + MSAL Python MSAL Node |
||
Классическое приложение, которое вызывает веб-API |
MSAL.NET MSAL Java MSAL Python MSAL Node |
MSAL.NET MSAL Java MSAL Python MSAL Node |
MSAL.NET MSAL Java MSAL Python MSAL Node MSAL.objc |
||
Мобильное приложение, которое вызывает веб-API |
MSAL.NET MSAL.NET | MSAL.objc | MSAL. Андроид | ||
Управляющая программа |
MSAL.NET MSAL Java MSAL Python MSAL Node |
MSAL.NET MSAL Java MSAL Python MSAL Node |
MSAL.NET MSAL Java MSAL Python MSAL Node |
||
Веб-API, которые вызывают веб-API |
ASP.NET Core + MSAL.NET MSAL Java MSAL Python MSAL Node |
ASP.NET Core + MSAL.NET MSAL Java MSAL Python MSAL Node |
ASP.NET Core + MSAL.NET MSAL Java MSAL Python MSAL Node |
Дополнительные сведения см. в статье Библиотеки проверки подлинности на платформе удостоверений Майкрософт.
Следующие шаги
Дополнительные сведения о проверке подлинности см. в следующих статьях: