Поделиться через


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

Единый вход (SSO) позволяет пользователям вводить свои учетные данные только один раз и автоматически работать в разных приложениях. Он улучшает взаимодействие с пользователями и повышает безопасность, уменьшая количество паролей, которыми пользователям необходимо управлять, что снижает риск усталости от паролей и связанных уязвимостей.

Платформа Microsoft Identity и библиотека проверки подлинности Microsoft (MSAL) помогают включить SSO в вашем пакете приложений. Включив функцию брокера, вы можете расширить SSO на всем устройстве.

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

Предварительные условия

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

  • Настройте ваше приложение. Дополнительные сведения см. в инструкциях по созданию приложения в руководстве по Android
  • Интеграция приложения с MSAL для Android

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

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

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

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

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

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

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

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

На Android брокер проверки подлинности Microsoft — это компонент, включенный в Microsoft Authenticator, Intune Company Portal и Link to Windows приложение.

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

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

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

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

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

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

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

Когда установили брокера

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

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

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

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

Когда брокер удаляется

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

Если microsoft Authenticator, Корпоративный портал Intune или Связь с Windows удалены, пользователю может потребоваться выполнить вход еще раз.

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

Создайте 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 как минимум как Администратор облачных приложений.
  2. Если у вас есть доступ к нескольким клиентам, используйте значок"Параметры" в верхнем меню, чтобы переключиться на клиент, содержащий регистрацию приложения из меню каталогов и подписок.
  3. Перейдите в Идентификация>Приложения>Регистрация приложений.
  4. Выберите приложение, а затем выберите Проверка подлинности>Добавить платформу>Android.
  5. В появившейся области Настройка приложения Android введите созданный ранее хэш подписи и имя пакета.
  6. Нажмите кнопку Настроить.

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

Дополнительные сведения о подписывании приложений см. в разделе о подписывании приложения руководства пользователя 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 для проверки подлинности. Если приложение не использует брокерскую аутентификацию, для достижения SSO необходимо использовать системный браузер вместо нативного веб-представления.

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

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

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

Примеры входа в MSAL

Последствия единого входа (Single Sign-On)

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

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

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

Примечание.

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

WebView

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

"authorization_user_agent" : "WEBVIEW"

При использовании приложения WEBVIEW пользователь непосредственно входит в приложение. Токены хранятся в песочнице приложения и недоступны вне контейнера cookies приложения. В результате у пользователя нет единого входа в приложениях, если приложения не интегрируются с приложением Microsoft Authenticator, корпоративным порталом Intune или ссылкой на Windows.

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

Браузер

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

"authorization_user_agent" : "BROWSER"

Используйте этот подход для обеспечения единого входа через браузер устройства. MSAL использует общий контейнер куки, который позволяет другим собственным приложениям или веб-приложениям осуществить единую аутентификацию на устройстве, используя сохраненный файл куки сеанса, заданный 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 позволяет настроить устройство так, чтобы с ним могли легко работать вместе сразу несколько сотрудников.

Дополнительные сведения о приложениях брокера см. в разделе: