Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Платформа удостоверений Майкрософт поддерживает проверку подлинности для разных типов архитектур современных приложений. Все эти архитектуры основаны на стандартных отраслевых протоколах 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 ID. Эти приложения могут автоматически получать маркер, используя Встроенную проверку подлинности Windows.
Приложения на устройстве без браузера также могут вызывать API от имени пользователя. Для проверки подлинности пользователю нужно войти на другое устройство, где есть веб-браузер. Чтобы реализовать этот сценарий, нужно использовать поток кода устройства.
Мы не рекомендуем использовать этот вариант, но для общедоступных клиентских приложений доступен поток имени пользователя и пароля. Этот поток пока еще необходим для некоторых сценариев, например при использовании DevOps.
Использование потока имени пользователя и пароля ограничивает приложения и больше не считается безопасным. Например, приложения не могут войти в систему пользователя, который должен использовать многофакторную проверку подлинности или средство условного доступа в идентификаторе Microsoft Entra. Ваши приложения также не имеют преимуществ от использования механизма единого входа. Аутентификация в потоке имени пользователя и пароля противоречит принципам современной проверки подлинности и поддерживается только для обеспечения совместимости со старыми технологиями.
Если вам нужно сохранять кэш маркеров в настольных приложениях, вы можете настроить сериализацию кэша маркеров. Реализовав сериализацию сдвоенного кэша маркеров, вы сможете поддерживать обратную и прямую совместимость кэшей маркеров.
См. сведения о классическом приложении, которое вызывает веб-API.
Мобильное приложение, которое вызывает веб-API от имени интерактивного пользователя
Подобно настольному приложению, мобильное приложение использует интерактивные методы получения токена из MSAL для вызова веб-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. Такое приложение может выполнять проверку подлинности и получать токены, используя удостоверение приложения. Приложение подтверждает свою идентификацию с помощью секрета или сертификата клиента.
Вы можете создавать такие сервисные приложения, которые получают токен для вызывающего приложения с помощью методов получения учетных данных клиента в 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 | От имени | Рабочие или учебные учетные записи и личные учетные записи |
Сценарии, поддерживаемые платформы и языки
Библиотеки проверки подлинности Майкрософт поддерживают несколько платформ:
- .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 |
Веб-приложение, которое поддерживает вход пользователей |
![]() 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 Java ![]() MSAL Python ![]() MSAL Node |
![]() ![]() MSAL Java ![]() MSAL Python ![]() MSAL Node |
![]() ![]() MSAL Java ![]() MSAL Python ![]() MSAL Node ![]() |
||
Мобильное приложение, которое вызывает веб-API |
![]() |
![]() |
![]() |
||
Демон-приложение |
![]() ![]() MSAL Java ![]() MSAL Python ![]() MSAL Node |
![]() ![]() MSAL Java ![]() MSAL Python ![]() MSAL Node |
![]() ![]() 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 |
Дополнительные сведения см. в статье Библиотеки проверки подлинности на платформе удостоверений Майкрософт.
Следующие шаги
Дополнительные сведения о проверке подлинности см. в следующих статьях: