Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Фронтовые работники, такие как розничные партнеры, члены экипажа полетов и работники службы полей часто используют общее мобильное устройство для выполнения своей работы. Эти общие устройства могут представлять риски безопасности, если пользователи совместно используют пароли или ПИН-коды, намеренно или нет, чтобы получить доступ к данным клиента и бизнеса на общем устройстве.
Режим общего устройства позволяет настроить устройство Android 8.0 или более поздней версии, чтобы сотрудники могли безопасно предоставлять общий доступ к устройству. Сотрудники могут войти один раз и получить единый вход для всех приложений, поддерживающих эту функцию, что дает им быстрый доступ к информации. Когда сотрудники выходят после завершения смены или задачи, они автоматически выходят из устройства и всех поддерживаемых приложений, что делает устройство готовым для следующего пользователя.
Чтобы воспользоваться преимуществами функции режима общего устройства, разработчики приложений и администраторы облачных устройств работают вместе:
Администраторы устройств подготавливают устройство к совместному использованию вручную или с помощью поставщика управления мобильными устройствами (MDM), например Microsoft Intune. Предпочтительный вариант — использовать MDM, так как он позволяет настраивать устройство в режиме общего использования в массовом порядке с помощью настройки без касания. MDM отправляет приложение Microsoft Authenticator на устройства и включает "Общий режим" для каждого устройства с помощью обновления управляемой конфигурации на устройство. Этот параметр общего режима — это изменение поведения поддерживаемых приложений на устройстве. Эта конфигурация от поставщика MDM задает общий режим устройства для устройства и активирует регистрацию общего устройства с помощью приложения Authenticator.
Разработчики приложений записывают приложение с одной учетной записью (приложения с несколькими учетными записями не поддерживаются в режиме общего устройства) для обработки следующего сценария:
- Войти в систему для пользователя на всём устройстве через любое поддерживаемое приложение
- Выполните выход пользователя на всём устройстве через любое поддерживаемое приложение
- Запросите состояние устройства, чтобы определить, находится ли приложение на устройстве, которое находится в режиме общего устройства
- Запрос состояния устройства пользователя, чтобы определить изменения в приложении с момента последнего использования.
Поддержка режима общего устройства должна рассматриваться как обновление компонентов для приложения и может помочь повысить его внедрение в средах, где одно и то же устройство используется среди нескольких пользователей.
Important
Microsoft приложения, поддерживающие режим общего устройства в Android, не требуют каких-либо изменений и просто необходимо установить на устройстве, чтобы получить преимущества, которые предоставляются в режиме общего устройства.
Настройка устройства в режиме общего устройства
Чтобы настроить устройство Android для поддержки режима общего устройства, оно должно работать под управлением Android OS 8.0 или более поздней версии. Устройство также следует очистить либо путем сброса к заводским настройкам, либо удалив и заново установив все приложения Microsoft и другие приложения с включенным режимом общего устройства.
Microsoft Intune поддерживает автоматическую подготовку устройств без участия пользователя для устройств Microsoft Entra в режиме общих устройств, что означает, что устройство можно настроить и зарегистрировать в Intune при минимальном участии сотрудника первой линии. Чтобы настроить устройство в режиме общего устройства, если в качестве MDM используется Microsoft Intune, см. Настройка регистрации устройств в режиме общего устройства Microsoft Entra.
Изменение приложения Android для поддержки режима общего устройства
Пользователи полагаются на вас, чтобы вы обеспечили, что их данные не утекут к другому пользователю. В следующих разделах содержатся полезные сигналы для указания приложению о том, что произошло изменение и должно быть обработано. Вы несете ответственность за проверку состояния пользователя на устройстве при каждом использовании приложения, а затем очистку данных предыдущего пользователя. Это также относится к случаям, когда приложение повторно загружается после работы в фоновом режиме при многозадачности. При изменении пользователя следует убедиться, что данные предыдущего пользователя очищаются, и все кэшированные данные, отображаемые в приложении, удаляются. Мы настоятельно рекомендуем вам и вашей компании проводить процесс проверки безопасности после обновления приложения для поддержки режима общего устройства.
Добавьте Microsoft Authentication Library (MSAL) SDK в список зависимостей приложения
Добавьте библиотеку MSAL в качестве зависимости в файле build.gradle, как показано ниже.
dependencies{
implementation 'com.microsoft.identity.client.msal:5.+'
}
Настройка приложения для использования режима общего устройства
Приложения, написанные с помощью пакета SDK библиотеки проверки подлинности Майкрософт (MSAL), могут управлять одной или несколькими учетными записями. Дополнительные сведения см. в статье о режиме одной учетной записи или нескольких учетных записей. Приложения в режиме общего устройства работают только в режиме с одной учетной записью.
Если вы не планируете поддерживать режим нескольких учетных записей, установите значение "account_mode""SINGLE" в файле конфигурации msal. Это гарантирует, что ваше приложение всегда будет получать ISingleAccountPublicClientApplication, что значительно упрощает интеграцию MSAL. Значением "account_mode" по умолчанию является "MULTIPLE", поэтому важно изменить это значение в файле конфигурации, если вы используете "single account" режим.
Ниже приведен пример файла конфигурации:
{
"client_id": "Client ID after app registration at https://aka.ms/MobileAppReg",
"authorization_user_agent": "WEBVIEW",
"redirect_uri": "Redirect URI after app registration at https://aka.ms/MobileAppReg",
"account_mode": "SINGLE",
"broker_redirect_uri_registered": true,
"authorities": [
{
"type": "AAD",
"audience": {
"type": "AzureADandPersonalMicrosoftAccount",
"tenant_id": "common"
}
}
]
}
Дополнительные сведения о настройках в файле конфигурации см. в документации по настройке.
Поддержка одной учетной записи и нескольких учетных записей
Приложение может быть создано для поддержки работы как на личных, так и на общих устройствах. Если ваше приложение сейчас поддерживает несколько учетных записей, а вам нужна поддержка режима совместной работы с устройством, добавьте поддержку для режима одной учетной записи.
Кроме того, может понадобиться изменить поведение приложения в зависимости от типа устройства, на котором оно запущено. Используйте ISingleAccountPublicClientApplication.isSharedDevice(), чтобы определить, когда запускать режим одной учетной записи.
Существует два разных интерфейса, представляющих тип устройства, на котором установлено приложение. При запросе экземпляра приложения из фабрики приложений MSAL правильный объект приложения предоставляется автоматически.
Следующая объектная модель иллюстрирует тип объекта, который вы можете получить, и то, что он означает в контексте общего устройства:
Когда вы получаете свой объект PublicClientApplication, необходимо выполнить проверку типа и приведение к соответствующему интерфейсу. Следующий код проверяет наличие нескольких режимов учетной записи или режимов одной учетной записи и приводит объект приложения соответствующим образом:
private IPublicClientApplication mApplication;
// Running in personal-device mode?
if (mApplication instanceOf IMultipleAccountPublicClientApplication) {
IMultipleAccountPublicClientApplication multipleAccountApplication = (IMultipleAccountPublicClientApplication) mApplication;
...
// Running in shared-device mode?
} else if (mApplication instanceOf ISingleAccountPublicClientApplication) {
ISingleAccountPublicClientApplication singleAccountApplication = (ISingleAccountPublicClientApplication) mApplication;
...
}
В зависимости от того, работает ли приложение на общем или личном устройстве, применяются следующие отличия:
| Устройство с режимом совместной работы | Личное устройство | |
|---|---|---|
| Учетные записи | Одна учетная запись | Несколько учетных записей |
| Вход | Global | Global |
| Выход | Global | Каждое приложение может контролировать, является ли выход локальным для приложения. |
| Поддерживаемые типы учетных записей | Только рабочие учетные записи | Поддерживаются личные и рабочие учетные записи |
Инициализация объекта PublicClientApplication
Если в файле конфигурации MSAL вы задали значение "account_mode":"SINGLE", возвращенный объект приложения можно без опасений приводить к типу ISingleAccountPublicCLientApplication.
private ISingleAccountPublicClientApplication mSingleAccountApp;
PublicClientApplication.create(
this.getApplicationCOntext(),
R.raw.auth_config_single_account,
new PublicClientApplication.ApplicationCreatedListener() {
@Override
public void onCreated(IPublicClientApplication application){
mSingleAccountApp = (ISingleAccountPublicClientApplication)application;
}
@Override
public void onError(MsalException exception){
/*Fail to initialize PublicClientApplication */
}
});
Обнаружение режима общего устройства
Обнаружение режима общего устройства важно для приложения. Во многих приложениях требуется изменение пользовательского интерфейса при использовании приложения на общем устройстве. Например, в вашем приложении может быть функция «Регистрация», которая не подходит для сотрудника первой линии, поскольку у него, скорее всего, уже есть учетная запись. Кроме того, может потребоваться добавить дополнительную безопасность для обработки данных приложения, если он находится в режиме общего устройства.
Используйте isSharedDevice API в IPublicClientApplication, чтобы определить, запущено ли приложение на устройстве в режиме совместного использования устройства.
В следующих фрагментах кода показаны примеры использования isSharedDevice API.
deviceModeTextView.setText(mSingleAccountApp.isSharedDevice() ? "Shared" : "Non-Shared");
Получение вошедшего в систему пользователя и определение того, сменился ли пользователь на устройстве
Еще одной важной частью поддержки режима общего устройства является определение состояния пользователя на устройстве и очистка данных приложения, если пользователь изменился или нет пользователя вообще на устройстве. Вы несете ответственность за то, чтобы данные не попали к другому пользователю.
Вы можете использовать API getCurrentAccountAsync, чтобы запросить текущую учётную запись, вошедшую в систему на устройстве.
Метод loadAccount позволяет извлечь учетную запись пользователя, выполнившего вход. Метод onAccountChanged определяет, изменился ли пользователь, выполнивший вход, и если да, выполняет очистку.
private void loadAccount()
{
mSingleAccountApp.getCurrentAccountAsync(new ISingleAccountPublicClientApplication.CurrentAccountCallback())
{
@Override
public void onAccountLoaded(@Nullable IAccount activeAccount)
{
if (activeAccount != null)
{
signedInUser = activeAccount;
final AcquireTokenSilentParameters silentParameters = new AcquireTokenSilentParameters.Builder()
.fromAuthority(signedInUser.getAuthority())
.forAccount(signedInUser)
.withScopes(Arrays.asList(getScopes()))
.withCallback(getAuthSilentCallback())
.build();
mSingleAccountApp.acquireTokenSilentAsync(silentParameters);
}
}
@Override
public void onAccountChanged(@Nullable IAccount priorAccount, @Nullable Iaccount currentAccount)
{
if (currentAccount == null)
{
//Perform a cleanup task as the signed-in account changed.
cleaUp();
}
}
@Override
public void onError(@NonNull Exception exception)
{
//getCurrentAccountAsync failed
}
}
}
Глобальный вход в систему пользователя
Если устройство настроено как общее устройство, приложение может вызвать signIn API для входа в учетную запись. Учетная запись будет доступна глобально для всех подходящих приложений на устройстве после входа первого приложения в учетную запись.
final SignInParameters signInParameters = ... /* create SignInParameters object */
mSingleAccountApp.signIn(signInParameters);
Глобальный выход пользователя из системы
Следующий код удаляет учетную запись входа и очищает кэшированные маркеры не только из приложения, но и с устройства, которое находится в режиме общего устройства. Однако он не очищает данные из приложения. Необходимо очистить данные из приложения и очистить все кэшированные данные, которые приложение может отображать пользователю.
mSingleAccountApp.signOut(new ISingleAccountPublicClientApplication.SignOutCallback() {
@Override
public void onSignOut() {
// clear data from your application
}
@Override
public void onError(@NonNull MsalException exception) {
// signout failed, show error
}
});
Прием сигнала для обнаружения глобального выхода из системы, инициированного другими приложениями.
Чтобы получить трансляцию изменений учетной записи, необходимо зарегистрировать приемник трансляции. Рекомендуется зарегистрировать ваш приемник трансляции посредством контекстного метода регистрации приемников.
При получении уведомления об изменении учетной записи сразу определите вошедшего пользователя и проверьте, изменился ли пользователь на устройстве. При обнаружении изменения инициируйте очистку данных для ранее вошедшего в систему учетной записи. Рекомендуется правильно остановить любые операции и выполнить очистку данных.
В следующем фрагменте кода показано, как можно зарегистрировать приемник трансляции.
private static final String CURRENT_ACCOUNT_CHANGED_BROADCAST_IDENTIFIER = "com.microsoft.identity.client.sharedmode.CURRENT_ACCOUNT_CHANGED";
private BroadcastReceiver mAccountChangedBroadcastReceiver;
private void registerAccountChangeBroadcastReceiver(){
mAccountChangedBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//INVOKE YOUR PRIOR ACCOUNT CLEAN UP LOGIC HERE
}
};
IntentFilter filter = new
IntentFilter(CURRENT_ACCOUNT_CHANGED_BROADCAST_IDENTIFIER);
this.registerReceiver(mAccountChangedBroadcastReceiver, filter);
}
Microsoft приложения, поддерживающие режим общего устройства
Эти приложения Microsoft поддерживают режим общего устройства Microsoft Entra:
- Microsoft Teams
- Microsoft Viva Engage (ранее Yammer)
- Outlook
- Microsoft Power Apps
- Microsoft 365
- Microsoft Power BI Mobile
- Microsoft Edge
- Управляемый начальный экран
Сторонние MDM, поддерживающие режим общего устройства
Эти сторонние поставщики систем управления мобильными устройствами (MDM) поддерживают режим общего устройства Microsoft Entra:
Выход из системы на общем устройстве и общий цикл работы приложения
При выходе пользователя необходимо принять меры для защиты конфиденциальности и данных пользователя. Например, если вы создаете приложение для работы с медицинскими картами, нужно убедиться, что, когда пользователь выходит из системы, ранее отображавшиеся медицинские карты пациентов удаляются с экрана. Ваше приложение должно быть готово к требованиям конфиденциальности данных и выполнять проверку каждый раз, когда оно переходит на передний план.
Когда приложение использует MSAL для выхода пользователя из приложения, работающего на устройстве, которое находится в общем режиме, учетная запись входа и кэшированные маркеры удаляются как из приложения, так и с устройства.
На следующей схеме показан общий жизненный цикл приложения и распространенные события, которые могут возникать во время выполнения приложения. Схема показывает, что происходит с момента запуска Activity, входа в учетную запись и выхода из нее, а также как в этот процесс вписываются такие события, как приостановка, возобновление и остановка Activity.
Дальнейшие действия
Настройте устройство Android для запуска приложений в режиме общего устройства и протестируйте приложение.