Повышение устойчивости проверки подлинности и авторизации в разрабатываемых клиентских приложениях

Узнайте, как создать устойчивость в клиентских приложениях, использующих идентификатор платформа удостоверений Майкрософт и Microsoft Entra для входа пользователей и выполнения действий от имени этих пользователей.

Использование библиотеки проверки подлинности Майкрософт (MSAL)

Библиотека проверки подлинности Майкрософт (MSAL) является частью платформа удостоверений Майкрософт. MSAL получает, управляет, кэширует и обновляет маркеры; в нем используются рекомендации по обеспечению устойчивости. MSAL помогает разработчикам создавать безопасные решения.

Подробнее:

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

  • Microsoft.Identity.Web
  • MSAL.NET
  • MSAL для Java
  • MSAL для Python

Подробнее:

При использовании MSAL поддерживается кэширование маркеров, обновление и автоматическое приобретение. Используйте простые шаблоны для получения маркеров для проверки подлинности. Существует поддержка многих языков. Найдите пример кода в платформа удостоверений Майкрософт примеры кода.

try
{
    result = await app.AcquireTokenSilent(scopes, account).ExecuteAsync();
}
catch(MsalUiRequiredException ex)
{
    result = await app.AcquireToken(scopes).WithClaims(ex.Claims).ExecuteAsync()
}

MSAL может обновлять маркеры. Когда платформа удостоверений Майкрософт выдает долгоживущие маркеры, он может отправлять сведения клиенту для обновления маркера (refresh_in). Приложение запускается, пока старый маркер действителен, но требуется больше времени для получения другого маркера.

Выпуски MSAL

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

Найдите последнюю версию и заметки о выпуске:

Устойчивые шаблоны для обработки маркеров

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

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

Кэширование маркеров

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

Схема вызова приложения к платформа удостоверений Майкрософт через кэш маркеров на устройстве, на котором запущено приложение.

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

Сериализация и сохранение маркеров

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

Подробнее:

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

Автоматическое получение маркеров

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

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

Автоматическое получение маркера начинается с допустимого маркера из кэша маркеров приложения. Если нет допустимого маркера, приложение пытается получить маркер с помощью доступного маркера обновления и конечной точки маркера. Если этот параметр недоступен, приложение получает маркер с помощью prompt=none параметра. Это действие использует конечную точку авторизации, но для пользователя не отображается пользовательский интерфейс. По возможности платформа удостоверений Майкрософт предоставляет маркер приложению без взаимодействия с пользователем. Если метод не приводит к маркеру, пользователь вручную повторно выполняет проверку подлинности.

Примечание.

Как правило, убедитесь, что приложения не используют такие запросы, как "login" и "consent". Эти запросы принудительно принудительно взаимодействуют с пользователем, если взаимодействие не требуется.

Обработка кода ответа

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

Код ответа HTTP 429

Существуют ответы на ошибки, влияющие на устойчивость. Если приложение получает код ответа HTTP 429, слишком много запросов, платформа удостоверений Майкрософт регулирует запросы. Если приложение выполняет слишком много запросов, оно регулируется, чтобы предотвратить получение маркеров приложения. Не позволяйте приложению пытаться получить маркер, прежде чем время отклика повтора после завершения действия поля ответа. Часто ответ 429 указывает, что приложение не кэширование и повторное использование маркеров правильно. Убедитесь, как кэшируются и повторно используются маркеры в приложении.

Код ответа HTTP 5x

Если приложение получает код ответа HTTP 5x, приложение не должно вводить быстрый цикл повторных попыток. Используйте ту же обработку для ответа 429. Если заголовок Retry-After не отображается, реализуйте экспоненциальную повторную попытку с первым повторным повтором, по крайней мере через 5 секунд после ответа.

При истечении времени ожидания запроса немедленное повторение не рекомендуется. Реализуйте экспоненциальную повторную попытку с первым повторным повтором, по крайней мере через 5 секунд после ответа.

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

Токены

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

Подробнее:

Примечание.

Некоторые приложения вызывают конечную точку UserInfo для получения утверждений о прошедшем проверку подлинности пользователя. Сведения в маркере идентификатора — это супермножество сведений из конечной точки UserInfo. Разрешить приложениям использовать маркер идентификатора вместо вызова конечной точки UserInfo.

Расширение стандартных утверждений маркера с необязательными утверждениями, такими как группы. Параметр "Группа приложений" включает группы, назначенные приложению. Параметры "Все " или "Группы безопасности" включают группы из приложений в одном клиенте, которые могут добавлять группы в маркер. Оцените эффект, так как он может отменить эффективность запросов групп в токене, вызвав большие двоичные объекты маркера и требуя дополнительных вызовов для получения групп.

Подробнее:

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

См. сведения о добавлении ролей приложений в приложение и их получении в маркере

Добавьте утверждения на основе сведений о клиенте. Например, расширение имеет идентификатор пользователя для конкретного предприятия.

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

Microsoft Graph

Microsoft Graph имеет единую конечную точку API для доступа к данным Microsoft 365 о шаблонах производительности, удостоверениях и безопасности. Приложения с помощью Microsoft Graph могут использовать сведения Microsoft 365 для авторизации.

Для приложений требуется один маркер для доступа к Microsoft 365, который является более устойчивым, чем предыдущие API для компонентов Microsoft 365, таких как Microsoft Exchange или Microsoft SharePoint, которые требовали несколько маркеров.

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

Общие сведения о пакете SDK Для Microsoft Graph

Для авторизации рекомендуется использовать утверждения токенов вместо некоторых вызовов Microsoft Graph. Группы запросов, роли приложения и необязательные утверждения в токенах. Для авторизации Microsoft Graph требуется больше сетевых вызовов, использующих платформа удостоверений Майкрософт и Microsoft Graph. Однако если приложение использует Microsoft Graph в качестве уровня данных, Microsoft Graph для авторизации не рискует.

Использование проверки подлинности через брокер на мобильных устройствах

На мобильных устройствах брокер проверки подлинности, такой как Microsoft Authenticator, повышает устойчивость. Брокер проверки подлинности использует первичный маркер обновления (PRT) с утверждениями о пользователе и устройстве. Используйте PRT для маркеров проверки подлинности для доступа к другим приложениям с устройства. Когда PRT запрашивает доступ к приложению, идентификатор Microsoft Entra доверяет своим устройствам и утверждениям MFA. Это повышает устойчивость, уменьшая действия по проверке подлинности устройства. Пользователи не сталкиваются с несколькими запросами MFA на одном устройстве.

См. раздел "Что такое основной маркер обновления"?

Схема вызова приложения, вызывающего платформа удостоверений Майкрософт, через кэш маркеров и хранилище маркеров, а также брокер проверки подлинности на устройстве, на котором запущено приложение.

MSAL поддерживает проверку подлинности брокера. Подробнее:

Непрерывная оценка доступа

Непрерывная оценка доступа (CAE) повышает безопасность приложений и устойчивость с помощью долгосрочных маркеров. При использовании CAE маркер доступа отменяется на основе критических событий и оценки политики, а не краткого времени существования маркеров. Для некоторых API ресурсов, так как риск и политика оцениваются в режиме реального времени, CAE увеличивает время существования маркера до 28 часов. MSAL обновляет долгоживущие маркеры.

Подробнее:

Если вы разрабатываете API-интерфейсы ресурсов, перейдите в openid.netраздел "Общие сигналы" — безопасная платформа веб-перехватчиков.

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