Включение единого входа между приложениями на Android с помощью MSAL

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

Платформа удостоверений Майкрософт и библиотека проверки подлинности Майкрософт (MSAL) помогают вам реализовать единый вход в своем наборе приложений. Используя возможности брокера и приложения Authenticator, вы можете развернуть единый вход на все устройство.

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

Необходимые компоненты

В этих инструкциях предполагается, что вы знаете, как выполнять перечисленные ниже задачи.

Методы единого входа

Реализовать единый вход для приложений, использующих MSAL для Android, можно двумя способами:

  • через приложение брокера;

  • через системный браузер.

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

Единый вход посредством проверки подлинности через посредника

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

  • Единый вход устройства
  • Условный доступ для:
    • Защита приложений Intune
    • Регистрация устройства (Workplace Join)
    • Управление мобыльными устройствами
  • Управление учетными записями на уровне устройств
    • через Android AccountManager и параметры учетной записи
    • "Рабочая учетная запись" — настраиваемый тип учетной записи

На Android брокер проверки подлинности Майкрософт — это компонент в составе приложений Microsoft Authenticator и Корпоративный портал Intune.

На следующей схеме показана связь между приложением, MSAL и брокерами проверки подлинности Майкрософт.

Diagram showing how an application relates to MSAL, broker apps, and the Android account manager.

Установка приложений, в которых размещается брокер

Владелец устройства может в любое время установить приложение с брокером из соответствующего магазина приложений (обычно Google Play Маркет). Однако некоторые интерфейсы API (Resources) защищены политиками условного доступа, для которых требуется, чтобы устройства были:

  • зарегистрированы (подключены к рабочему месту) и (или)
  • зарегистрированы в системе управления устройствами или
  • зарегистрированы в службе "Защита приложений Intune".

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

Последствия установки и удаления брокера

Установка брокера

После установки брокера на устройстве все последующие запросы интерактивных маркеров (вызовы к acquireToken()) обрабатываются брокером, а не локально библиотекой MSAL. Любое состояние единого входа, ранее доступное для MSAL, недоступно для брокера. В результате пользователю необходимо повторно пройти проверку подлинности или выбрать учетную запись из существующего списка учетных записей, известных устройству.

После установки брокера от пользователя не требуется повторный вход. Запрос будет отправлен брокеру только в случае, если пользователю потребуется устранить (разрешить) исключение MsalUiRequiredException. Исключение MsalUiRequiredException может возникнуть по ряду причин и должно быть разрешено в интерактивном режиме. Например:

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

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

Удаление брокера

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

Если установлен Корпоративный портал Intune, который работает как активный брокер, и при этом также установлено приложение Microsoft Authenticator, то после удаления Корпоративного портала Intune (активного брокера) пользователю потребуется снова выполнить вход. После повторного входа активным брокером станет приложение Microsoft Authenticator.

Интеграция с брокером

Создание URI перенаправления для брокера

Совет

Действия, описанные в этой статье, могут немного отличаться на портале, с который вы начинаете работу.

Необходимо зарегистрировать URI перенаправления, совместимый с брокером. URI перенаправления для брокера должен включать имя пакета приложения и представление подписи приложения в кодировке Base64.

Формат URI перенаправления: msauth://<yourpackagename>/<base64urlencodedsignature>

С помощью keytool можно создать хэш подписи в кодировке Base64 с помощью ключей подписи приложения, а затем создать URI перенаправления с помощью этого хэша.

Linux и macOS:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

Windows:

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64

После создания хэша подписи с помощью keytool создайте URI перенаправления на портале Azure:

  1. Войдите в Центр администрирования Microsoft Entra как минимум облачные приложения Администратор istrator.
  2. Если у вас есть доступ к нескольким клиентам, используйте значок Параметры в верхнем меню, чтобы переключиться на клиент, содержащий регистрацию приложения из меню каталогов и подписок.
  3. Перейдите к приложениям> удостоверений>Регистрация приложений.
  4. Выберите приложение, а затем выберите "Добавить платформу Android" для>проверки подлинности.>
  5. В появившейся области Настройка приложения Android введите созданный ранее хэш подписи и имя пакета.
  6. Нажмите кнопку Настроить.

URI перенаправления создается для вас и отображается в поле URI перенаправления в области конфигурации Android.

Дополнительные сведения о подписывании приложений см. в разделе о подписывании приложения руководства пользователя Android Studio.

Настройка MSAL для использования брокера

Чтобы использовать в приложении брокер, необходимо подтвердить, что вы настроили перенаправление брокера. Например, укажите URI перенаправления с включенным брокером и подтвердите, что зарегистрировали его, добавив в файл конфигурации MSAL следующие параметры:

"redirect_uri" : "<yourbrokerredirecturi>",
"broker_redirect_uri_registered": true

MSAL взаимодействует с брокером двумя способами:

  • Служба, привязанная к брокеру
  • AccountManager для Android

Сначала MSAL использует привязанную к брокеру службу, так как для ее вызова не требуются разрешения Android. Если привязка к привязанной службе завершается сбоем, MSAL использует API AccountManager Android. MSAL делает это только в том случае, если приложению уже предоставлено разрешение "READ_CONTACTS".

При возникновении MsalClientException с кодом ошибки "BROKER_BIND_FAILURE" есть два варианта:

  • Попросите пользователя отключить функцию энергосбережения для приложения Microsoft Authenticator и Корпоративного портала Intune.
  • Попросите пользователя предоставить разрешение "READ_CONTACTS".

Проверка интеграции с брокером

Не всегда сразу становится ясно, что интеграция с брокером работает, но ее можно проверить с помощью следующих действий:

  1. На устройстве Android выполните запрос с помощью брокера.
  2. В параметрах на устройстве Android найдите только что созданную учетную запись, соответствующую учетной записи, с помощью которой была выполнена проверка подлинности. Это должна быть рабочая учетная запись.

Если вам потребуется повторить тест, вы можете удалить учетную запись из параметров.

Единый вход через системный браузер

Приложения Android имеют возможность использовать WEBVIEWсистемный браузер или пользовательские вкладки Chrome для проверки подлинности. Если приложение не использует проверку подлинности через брокер, для достижения единого входа необходимо использовать системный браузер, а не собственный веб-представление.

Агенты авторизации

Выбор определенной стратегии для агентов авторизации важен и представляет дополнительные приложения функциональных возможностей, которые могут настраиваться. Рекомендуется использовать WEBVIEW. Дополнительные сведения о других значениях конфгурации (см. раздел "Общие сведения о файле конфигурации ANDROID MSAL".

MSAL поддерживает авторизацию на базе WEBVIEW или системного браузера. На изображении ниже показано, как выглядит использование WEBVIEW или системного браузера с настраиваемыми вкладками или без них:

MSAL login examples

Последствия единого входа

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

Приложения можно интегрировать с MSAL для BROWSER авторизации. В отличие от WEBVIEW, общий доступ к jar-файлу cookie с помощью системного браузера по умолчанию позволяет BROWSER использовать меньше входов с веб-приложениями или другими собственными приложениями, интегрированными с пользовательскими вкладками.

Если приложение использует MSAL с брокером, таким как Microsoft Authenticator или Корпоративный портал Intune, пользователи могут иметь единый вход в приложения, если у них есть активный вход с одним из приложений.

Примечание.

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

WebView

Чтобы использовать в приложении веб-представление, добавьте следующую строку в JSON-конфигурацию приложения, которая передается в MSAL:

"authorization_user_agent" : "WEBVIEW"

При использовании WEBVIEW в приложении пользователь входит непосредственно в приложение. Маркеры хранятся в песочнице приложения и недоступны вне хранилища cookie приложения. В результате у пользователя нет единого входа в приложениях, если приложения не интегрируются с Authenticator или Корпоративный портал.

При этом WEBVIEW позволяет настраивать внешний вид и работу пользовательского интерфейса входа. Дополнительные сведения о том, как настраивать эти параметры, см. в статье о веб-представлениях в Android.

Браузер

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

"authorization_user_agent" : "BROWSER"

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

Эвристика выбора браузера

Так как в MSAL нельзя указать точный пакет браузера, который должен использоваться на каждом из множества Android-телефонов, в MSAL реализована эвристика выбора браузера в попытках обеспечить оптимальный процесс единого входа между устройствами.

Сначала MSAL извлекает браузер по умолчанию из диспетчера пакетов и проверяет, находится ли он в проверенном списке надежных браузеров. Если его там нет, MSAL вместо запуска другого браузера (не браузера по умолчанию) из списка надежных переходит к использованию веб-представления. Браузер по умолчанию выбирается независимо от того, поддерживает ли она пользовательские вкладки. Если браузер поддерживает пользовательские вкладки, MSAL запускает пользовательскую вкладку. Пользовательские вкладки имеют внешний вид и чувствуют себя ближе к встроенному приложению WebView и разрешают базовую настройку пользовательского интерфейса. Дополнительные сведения см. в статье о настраиваемых вкладках в Android.

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

Протестированные браузеры

Браузеры из списка ниже были протестированы на предмет правильного перенаправления на "redirect_uri", указанный в файле конфигурации:

Устройство Встроенный браузер Chrome Opera Microsoft Edge UC Browser Firefox
Nexus 4 (API 17) передача передача Неприменимо Неприменимо Неприменимо Неприменимо
Samsung S7 (API 25) Проверка пройдена1 передача передача передача Сбой передача
Vivo (API 26) передача передача передача передача передача Сбой
Pixel 2 (API 26) передача передача передача передача Сбой передача
Oppo передача неприменимо2 Неприменимо Неприменимо Неприменимо Неприменимо
OnePlus (API 25) передача передача передача передача Сбой передача
Nexus (API 28) передача передача передача передача Сбой передача
MI передача передача передача передача Сбой передача

1 Встроенным браузером Samsung является Samsung Internet.
2Браузер по умолчанию не может быть изменен в параметре устройства Oppo.

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

Режим совместной работы для устройств Android позволяет настроить устройство так, чтобы с ним могли легко работать вместе сразу несколько сотрудников.