Сведения о библиотеке аутентификации Майкрософт
Библиотека проверки подлинности Майкрософт (MSAL) позволяет разработчикам получать маркеры безопасности из платформа удостоверений Майкрософт для проверки подлинности пользователей и доступа к защищенным веб-API. Его можно использовать для обеспечения безопасного доступа к Microsoft Graph, другим API Майкрософт, сторонним веб-API или собственным веб-API MSAL поддерживает множество различных архитектур приложений и платформ, включая .NET, JavaScript, Java, Python, Android и iOS.
MSAL предоставляет множество способов получения маркеров с согласованным API для многих платформ. Использование MSAL обеспечивает следующие преимущества:
- Не требуется напрямую использовать библиотеки OAuth или код для соответствующего протокола в приложении.
- Получение маркеров от имени пользователя или приложения (когда применимо к платформе).
- Сохраняет кэш маркеров и обновляет маркеры после истечения срока действия. Нет необходимости вручную регулировать истечение срока действия маркера.
- Помогает указать аудиторию, которая может входить в приложение.
- Помогает настроить приложение из файлов конфигурации.
- Поможет вам устранять неполадки, выявляя действенные исключения, ведя журналы и телеметрию.
Типы приложений и сценариев
В MSAL маркер можно получить из многих типов приложений: веб-приложений, веб-API, одностраничных приложений (JavaScript), мобильных и собственных приложений, а также управляющих и серверных приложений. MSAL в настоящее время поддерживает платформы и платформы, перечисленные в следующей таблице.
Библиотека | Поддерживаемые платформы и среды |
---|---|
MSAL для Android | Android |
MSAL Angular | Одностраничные приложения на платформах Angular и Angular.js |
MSAL для iOS и macOS | iOS и macOS |
MSAL Go (предварительная версия) | Windows, macOS, Linux |
MSAL Java | Windows, macOS, Linux |
MSAL.js | Платформы JavaScript/TypeScript, такие как Vue.js, Ember.js или Durandal.js |
MSAL для .NET | платформа .NET Framework, .NET, .NET MAUI, WINUI, Xamarin Android, Xamarin iOS, универсальная платформа Windows |
Узел MSAL | Веб-приложения на Express, классические приложения Electron, кроссплатформенные консольные приложения |
MSAL Python | Windows, macOS, Linux |
MSAL React | Одностраничные приложения на React и с библиотеками на основе React (Next.js, Gatsby.js) |
Потоки проверки подлинности
В следующей таблице показаны некоторые из различных потоков проверки подлинности, предоставляемых библиотекой проверки подлинности Майкрософт (MSAL). Эти потоки можно использовать в различных сценариях приложения.
Поток аутентификации | Включает | Поддерживаемые типы приложений |
---|---|---|
Код авторизации | Вход пользователя и доступ к веб-API от имени пользователя. | Классическое, мобильное приложение, одностраничные приложения (SPA) (требует PKCE), Web |
Учетные данные клиента | Доступ к веб-API путем использования удостоверения самого приложения. Обычно используется для обмена данными между серверами и автоматизированными скриптами, не требующим взаимодействия с пользователем. | IoT Edge |
Код устройства | Вход пользователя и доступ к веб-API от имени пользователя на устройствах с ограниченными возможностями ввода, например на смарт-телевизорах или устройствах Интернета вещей. Также используется приложениями командной строки (CLI). | Классические и мобильные |
Неявное предоставление разрешения | Вход пользователя и доступ к веб-API от имени пользователя. Поток неявного предоставления разрешения больше не рекомендуется — используйте код авторизации с PKCE. | Одностраничные приложения (SPA), Интернет |
Поток On-Behalf-Of (OBO) | Доступ из "вышестоящего" веб-API к "нижестоящему" веб-API от имени пользователя. Удостоверение пользователя и делегированные разрешения передаются нижестоящему API от вышестоящего. | Веб-интерфейс API |
Имя пользователя/пароль (ROPC) | Позволяет приложению войти в систему, напрямую обрабатывая пароль. Поток ROPC НЕ рекомендуется. | Классические и мобильные |
Встроенная проверка подлинности Windows (IWA) | Позволяет приложениям на компьютерах, присоединенных к домену или Microsoft Entra, автоматически получать маркер (без какого-либо взаимодействия с пользовательским интерфейсом от пользователя). | Классические и мобильные |
Общедоступные и конфиденциальные клиентские приложения
Библиотека проверки подлинности Майкрософт (MSAL) определяет два типа клиентов; общедоступные клиенты и конфиденциальные клиенты. Клиент — это сущность программного обеспечения, которая имеет уникальный идентификатор, назначенный поставщиком удостоверений. Типы клиентов зависят от их способности безопасно проходить проверку подлинности с помощью сервера авторизации и хранить конфиденциальные данные, подтверждающие удостоверения, чтобы он не смог получить доступ или узнать пользователю в пределах его доступа.
При изучении общедоступной или конфиденциальной природы данного клиента мы оцениваем способность этого клиента подтвердить свою личность на сервере авторизации. Это важно, так как сервер авторизации должен иметь возможность доверять удостоверению клиента для выдачи маркеров доступа.
Общедоступные клиентские приложения выполняются на устройствах, таких как классические, браузерные API без браузера, мобильные или клиентские браузерные приложения. Они не могут быть доверенными для безопасного хранения секретов приложений, поэтому они могут получать доступ только к веб-API от имени пользователя. В любой момент, когда источник или скомпилированный байт-код данного приложения передается в любое место, где его можно читать, дизассессировать или иначе проверять ненадежными сторонами. Так как они также поддерживают только общедоступные потоки клиентов и не могут хранить секреты во время настройки, они не могут иметь секреты клиента.
Конфиденциальные клиентские приложения выполняются на серверах, таких как веб-приложения, веб-ПРИЛОЖЕНИЯ API или приложения управляющей программы. Они считаются сложными для доступа пользователями или злоумышленниками, поэтому могут достаточно хранить секреты времени конфигурации, чтобы подтвердить свою личность. Идентификатор клиента предоставляется через веб-браузер, но секрет передается только в обратном канале и никогда не раскрывается напрямую.