Часто задаваемые вопросы

Область действия MSAL4J

Каковы основные функции MSAL?

Получение токена из службы токенов безопасности (STS) клиентским приложением для доступа к защищённому ресурсу.

Что такое MSAL4J?

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

Каких стандартных протоколов придерживается MSAL при получении токенов?

MSAL реализует пользовательскую версию протокола OAuth2. Кроме того, для некоторых конкретных сценариев он может использовать внутренние протоколы (например, WS-Trust).

Является ли MSAL универсальной библиотекой для получения токенов с использованием протокола OAuth2?

Нет. MSAL — это клиентская библиотека для Microsoft Entra ID, службы федерации Active Directory (AD FS) (ADFS) и Azure Active Directory B2C. Существуют некоторые пользовательские понятия, такие как "ресурс", необходимые ADAL, которые считаются расширениями для общей спецификации протокола OAuth2 и не поддерживаются другими службами STS.

Наращивание API

Следует ли отключить проверку авторитетности, передав в конструктор значение false?

Это зависит от типа власти, с которой вы разговариваете. Если это ADFS, нужно передать false, так как ADFS в настоящее время не поддерживает проверку authority. Если это Microsoft Entra ID, вы по-прежнему можете передать значение false, однако рекомендуется использовать true, особенно если вы получаете адрес центра авторизации от третьей стороны (например, через challenge 401). Это позволяет защитить приложения и пользователей от перенаправления на вредоносные конечные точки, чтобы ввести свои учетные данные.

Какую перегрузку метода AcquireToken следует вызвать?

Он зависит от типа используемого клиентского приложения и сценария, для котором требуется маркер. См. руководство, описанное в разделе "Получение маркеров".

Отладка

Каковы распространенные причины сбоя при использовании MSAL?

Проблемы в MSAL могут иметь различные причины. Это распространенные виновные:

  1. У компьютера возникли проблемы с подключением.
  2. Ваши приложения и/или пользователи настроены некорректно в Microsoft Entra ID или ADFS.
  3. Для задачи используется неправильный API (MSAL имеет несколько аналогичных перегрузок для метода AcquireToken).
  4. В MSAL возникает ошибка! Да, это всегда возможно. Если вы уверены, что ни один из указанных выше элементов не является причиной сбоя, сообщите нам об этом, и мы расследуем и исправим ошибку, если существует.

Какие средства можно использовать для диагностики проблемы в ADAL?

Существует несколько средств диагностики, которые можно использовать:

  1. MSAL Samples: лучший инструмент в первую очередь — это набор примеров, опубликованных вместе с MSAL (в репозитории библиотеки, а также примеры, доступные в организации GitHub AzureSamples). Попробуйте найти ближайший пример приложения и скачать и запустить его на компьютере. Если пример работает правильно, необходимо выполнить в вашем приложении те же шаги, что и в приложении-примере.
  2. Журналы диагностики MSAL: вы можете включить ведение журнала. Это приведет к записи некоторых журналов с информацией о внутренних шагах MSAL. Вы можете проанализировать журналы, чтобы найти проблему. Кроме того, если вы обратитесь к группе MSAL, необходимо отправить журналы, чтобы помочь в анализе. Инструкцию о том, как включить журналы MSAL, можно найти в официальной документации
  3. Сетевые трассировки: Используйте такой инструмент, как Fiddler, для записи всего HTTP-обмена между MSAL и сервером. Fiddler особенно легко использовать на настольных компьютерах под управлением Windows. Поделитесь файлом трассировки сети с командой MSAL в случае, если мы вовлечены в диагностику проблемы.

Какие ошибки возвращаются из MSAL как исключение и какой тип сообщается пользователю?

Большинство ошибок возвращаются из MSAL в виде исключений; однако в редких случаях MSAL отображает ошибку в элементе управления браузера. Такие ситуации возникают в основном, когда не удаётся проверить клиент или сервер авторизации недоступен.

Есть ли в MSAL любая логика повторных попыток?

Нет. Если операция завершается сбоем, MSAL сообщает об ошибке, создавая исключение. Исключение включает код ошибки, а также код состояния в случае, если ошибка возвращается уполномоченным органом. В таких случаях задача разработчика — проверить код состояния в исключении (который в большинстве случаев отражает код состояния HTTP-ответа) и решить, следует ли выполнять повторную попытку. 502 обычно является кодом состояния, который гарантирует повторную попытку.

Модель выпуска MSAL

Как часто MSAL выпускает новую версию?

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

Что такое модель совместимости версий MSAL?

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