Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Пакет SDK для приложений Microsoft Intune для Android позволяет включать политики защиты приложений Intune (также известные как политики MAM) в родное приложение Java/Kotlin для Android. Приложение, управляемое Intune, интегрировано с пакетом SDK для приложений Intune. Администраторы Intune могут легко развернуть политики защиты приложений в вашем приложении, управляемом Intune, когда Intune активно управляет приложением.
Примечание.
Это руководство разделено на несколько отдельных этапов. Начните с рассмотрения Этап 1: Планирование интеграции.
Этап 4. Основы интеграции MAM
Цели этапа
- Включите строгий режим MAM.
- Зарегистрируйтесь для получения критических уведомлений от SDK.
- Реализация и регистрация обратного вызова проверки подлинности для предоставления маркеров Microsoft Entra из MSAL в пакет SDK.
- Зарегистрируйте новые учетные записи для управления MAM после проверки подлинности в MSAL.
- Отмените регистрацию учетных записей при выходе, чтобы удалить корпоративные данные.
- (Рекомендуется) Включите в приложение вход в систему MAM.
- (Рекомендуется) Узнайте, как использовать диалоговое окно диагностики SDK.
Общие сведения
Теперь, когда у вас есть пакет SDK для приложений Intune, который интегрирован в вашу сборку и успешно выполняет замену классов и методов, пришло время внести необходимые изменения в код, чтобы начать применять параметры политики защиты приложений для учетных записей, защищенных MAM.
На этом этапе вы узнаете, как подключиться к ведению журнала пакета SDK, открыть диалоговое окно диагностики, включить строгий режим MAM для выявления возможных ошибок интеграции, зарегистрироваться для получения уведомлений от SDK и, самое главное, как зарегистрировать учетную запись для Intune MAM, чтобы начать получать политики.
Строгий режим MAM
Строгий режим MAM может выявлять потенциальные ошибки в интеграции вашего приложения с пакетом SDK для приложений Intune. Эти ошибки интеграции могут привести к неправильному применению политики защиты приложений и к тому, что корпоративные данные остаются незащищенными. Поэтому требуется использовать строгий режим MAM.
Строгий режим MAM ищет аномалии в использовании вашим приложением интерфейсов API MAM и API платформы с ограничениями MAM. Строгий режим MAM, созданный по образцу StrictMode для Android, запускает предопределенный набор проверок, которые вызывают ошибки во время выполнения в случае их сбоя. Строгий режим MAM не должен оставаться включенным в производственных сборках; Вместо этого используйте его во внутренней разработке, отладке и (или) сборках для внутреннего тестирования.
Чтобы включить строгий режим MAM, в начале инициализации приложения вызовите следующий метод (например, Application.onCreate:):
MAMStrictMode.enable();
Если не удается выполнить проверку строгого режима MAM, попытайтесь определить, является ли это реальной проблемой, которую можно устранить в приложении, или ложным срабатыванием. Если вы считаете, что это ложное срабатывание или не уверены, сообщите об этом команде Intune MAM. Это позволит нам убедиться в том, что мы согласны с ложноположительным результатом, и попытаться улучшить обнаружение для будущих выпусков. Чтобы подавить ложные срабатывания, отключите неудачную проверку, следуя приведенным ниже инструкциям.
Обработка нарушений
При сбое проверки выполняется MAMStrictViolationHandler.
Обработчик по умолчанию выбрасывает Error, который, как ожидается, приведет к сбою приложения.
Это сделано для того, чтобы сбои были как можно более шумными, и соответствует намерению, согласно которому строгий режим не должен включаться в производственных сборках.
Если ваше приложение хочет обрабатывать нарушения по-другому, оно может предоставить собственный обработчик, вызвав следующий метод, где handler реализуется MAMStrictViolationHandler:
MAMStrictMode.global().setHandler(handler);
Блокирование проверок
Если не удалось выполнить проверку, когда приложение не делает ничего неправильного, сообщите об этом, как упоминалось выше. В то же время, может потребоваться отключить проверку при ложном срабатывании, по крайней мере во время ожидания обновленного пакета SDK. Непройденная проверка будет показана в ошибке, вызванной обработчиком по умолчанию, или будет передана пользовательскому обработчику, если она установлена.
Хотя подавление может осуществляться по всему миру, предпочтительнее временное отключение каждого потока на определенном месте вызова. В следующих примерах показаны различные способы отключения MAMStrictCheck.IDENTITY_NO_SUCH_FILE (возникают, если предпринимается попытка защитить несуществующий файл).
Per-Thread Временное подавление
Это предпочтительный механизм подавления.
try (StrictScopedDisable disable = MAMStrictMode.thread().disableScoped(MAMStrictCheck.IDENTITY_NO_SUCH_FILE)) {
// Perform the operation which raised a violation here
}
// The check is no longer disabled once the block exits
Per-Thread Постоянное подавление
MAMStrictMode.thread().disable(MAMStrictCheck.IDENTITY_NO_SUCH_FILE);
Глобальное (в масштабах всего процесса) подавление
MAMStrictMode.global().disable(MAMStrictCheck.IDENTITY_NO_SUCH_FILE);
Зарегистрируйтесь, чтобы получать уведомления от SDK
Пакет SDK для приложения Intune выдает множество различных типов уведомлений, информируя приложения о срочных операциях управления. Приложение может зарегистрировать любое из этих уведомлений и выполнить действие при его получении.
Например, всякий раз, когда ИТ-администратор отдает команду выборочной очистки для устройства, служба Intune отправляет уведомление в пакет SDK, которое передается вашему приложению как WIPE_USER_DATA.
Ваше приложение может прослушивать это уведомление и контролировать, какие данные стираются; или он может полагаться на поведение очистки SDK по умолчанию.
Многие уведомления являются необязательными. В зависимости от функций пакета SDK, которые использует приложение, могут потребоваться некоторые уведомления. Подробные сведения о том, как зарегистрироваться для получения уведомлений, какие уведомления доставляет пакет SDK, и как обрабатывать определенные типы уведомлений, см. в разделе Регистрация уведомлений от пакета SDK на этапе 7: Функции участия в приложении .
Регистрация для получения политики защиты приложений
При создании политик защиты приложений администраторы нацеливают эти политики на определенные учетные записи в своей организации. На клиенте пакет SDK должен знать, какая учетная запись использует приложение, чтобы иметь возможность получить политику этой учетной записи и соответствующим образом применить параметры. Ваше приложение отвечает за предоставление пакету SDK этих сведений учетной записи. Этот процесс называется регистрацией.
При добавлении новой учетной записи приложение должно зарегистрировать ее в пакете SDK, даже если другие учетные записи уже зарегистрированы. Приложение может зарегистрировать несколько учетных записей. Однако в настоящее время можно зарегистрировать только одну учетную запись или применить к ней политику защиты приложений. На Android это ограничение для одной управляемой учетной записи распространяется на все устройства.
Регистрация или регистрация
Регистрация — это процесс, при котором приложение информирует SDK о том, что используется новая учетная запись. Пакет SDK содержит функции, которые приложение должно вызывать для регистрации и отмены регистрации учетных записей.
Регистрация — это процесс, при котором пакет SDK записывает зарегистрированную учетную запись в службе Intune, чтобы можно было применить политику учетной записи. Приложению не нужно вызывать никаких функций для регистрации. Пакет SDK полностью обрабатывает регистрацию после регистрации учетной записи.
Если одна учетная запись уже зарегистрирована в приложении, при регистрации другой учетной записи, даже если для этой учетной записи используются политики защиты приложений, эта вторая учетная запись не будет зарегистрирована и политика не будет применяться.
Примечание.
Термин "регистрация" также может относиться к регистрации в MDM на уровне устройства. Дополнительные сведения см. в приложении в разделе Регистрация в MDM и MAM.
Внедрение регистрации
Предостережение
Если ваше приложение не интегрирует MSAL (настоятельно рекомендуется), см. раздел "Регистрация по умолчанию " в приложении , а не продолжайте этот раздел.
Приложение должно внести три изменения в код, чтобы успешно зарегистрировать учетную запись:
Приложение должно реализовать и зарегистрировать экземпляр интерфейса MAMServiceAuthenticationCallback или MAMServiceAuthenticationCallbackExtended . Экземпляр обратного вызова должен быть зарегистрирован в методе
onCreate()(илиonMAMCreate()) подкласса Application.Если учетная запись создана и пользователь успешно входит с помощью MSAL, приложение должно вызвать registerAccountForMAM.
При удалении учетной записи приложение должно вызвать unregisterAccountForMAM, чтобы удалить учетную запись из управления Intune.
Предостережение
Звонок может инициировать очистку для полного удаления корпоративных данных для учетной записи.
Все необходимые API аутентификации и регистрации можно найти в интерфейсе MAMEnrollmentManager .
Ссылку на это MAMEnrollmentManager можно получить следующим образом:
MAMEnrollmentManager mgr = MAMComponents.get(MAMEnrollmentManager.class);
// make use of mgr
Возвращаемый MAMEnrollmentManager экземпляр гарантированно не будет иметь значения NULL.
Методы API делятся на две категории: аутентификация и регистрация учетной записи.
MAMEnrollmentManager и проверка подлинности
Пакет SDK часто взаимодействует со службой Intune: для регистрации зарегистрированных учетных записей, для получения обновлений параметров политики защиты приложений и для получения ожидающих действий администратора, таких как выборочная очистка защищенных данных в приложении. Для успешной связи со службой Intune пакету SDK требуются новые маркеры доступа из приложений, интегрированных с MSAL.
Если пакету SDK не удастся получить новый маркер, он не сможет взаимодействовать со службой Intune, что может задержать получение и применение новых параметров политики или действий администратора. Очень важно, чтобы приложение выполняло эти шаги, чтобы обеспечить беспроблемное применение политики.
На этапе 2 вы интегрировали MSAL в приложение для проверки подлинности и получения маркеров доступа. Здесь вы реализуете обратный вызов проверки подлинности, чтобы позволить пакету SDK запрашивать необходимые маркеры.
MAMEnrollmentManager поддерживает следующие методы проверки подлинности:
interface MAMServiceAuthenticationCallback {
String acquireToken(String upn, String aadId, String resourceId);
}
interface MAMServiceAuthenticationCallbackExtended extends MAMServiceAuthenticationCallback {
String acquireToken(String upn, String aadId, String tenantId, String authority, String resourceId);
}
void registerAuthenticationCallback(MAMServiceAuthenticationCallback callback);
void updateToken(String upn, String aadId, String resourceId, String token);
Примечание.
Параметр aadId в этих методах ссылается на ИД пользователя Microsoft Entra, ранее известный как ИД AAD, а также OID.
Приложение должно реализовать интерфейс MAMServiceAuthenticationCallback или интерфейс MAMServiceAuthenticationCallbackExtended, чтобы позволить пакету SDK запрашивать маркер Microsoft Entra для указанной учетной записи и идентификатора ресурса. Экземпляр обратного вызова должен быть предоставлен путем
MAMEnrollmentManagerвызова его метода registerAuthenticationCallback . Маркер может потребоваться на ранней стадии жизненного цикла приложения для повторных попыток регистрации или проверки обновления политики защиты приложений, поэтому обратный вызов должен быть зарегистрирован в методеonCreate()(илиonMAMCreate()) подкласса приложенияApplication.Метод
acquireTokenдолжен получить маркер доступа для запрошенного идентификатора ресурса для данной учетной записи. Если не удается получить запрошенный маркер, должен быть возвращен null.Совет
Убедитесь, что приложение использует
resourceIdпараметры иaadIdпараметры, передаваемыеacquireToken()вам, чтобы получить правильный маркер. Параметрupnпредназначен только для информационных целей; его не следует использовать для идентификации учетной записи без учета .aadIdЕгоresourceIdследует использовать для создания правильных областей иaadIdдля передачи правильной учетной записи. Если токены возвращаются не для той учетной записи и (или) не того ресурса, это может привести к задержке или сбою при регистрации приложения и получении политик. Если вашему приложению требуется разрешение Microsoft Entra для правильного получения маркера, реализуйте интерфейс.MAMServiceAuthenticationCallbackExtendedclass MAMAuthCallback implements MAMServiceAuthenticationCallbackExtended { public String acquireToken(String upn, String aadId, String tenantId, String authority, String resourceId) { final String[] scopes = {resourceId + "/.default"}; final IAccount account = getAccount(aadId); if (account == null) { // Log error or warning here about: "no account found for " + aadId return null; } AcquireTokenSilentParameters params = new AcquireTokenSilentParameters.Builder() .forAccount(account) .fromAuthority(account.getAuthority()) .withScopes(Arrays.asList(scopes)) .withCallback(callback) .build(); return mMsalClientApplication.acquireTokenSilent(params); } private static IAccount getAccount(String aadId) throws InterruptedException, MsalException { IAccount account = null; if (mMsalClientApplication instanceof IMultipleAccountPublicClientApplication) { IMultipleAccountPublicClientApplication multiAccountPCA = (IMultipleAccountPublicClientApplication) mMsalClientApplication; account = multiAccountPCA.getAccount(aadId); } else { ISingleAccountPublicClientApplication singleAccountPCA = (ISingleAccountPublicClientApplication) mMsalClientApplication; ICurrentAccountResult accountResult = singleAccountPCA.getCurrentAccount(); if (accountResult != null) { account = accountResult.getCurrentAccount(); // make sure this is the correct user if (account != null && !account.getId().equals(aadId)) account = null; } } return account; } }В случае, если приложению не удается предоставить маркер при вызове
acquireToken()пакета SDK (например, если автоматическая проверка подлинности завершается сбоем и сейчас неудобное время для отображения пользовательского интерфейса), приложение может предоставить маркер позже, вызвав метод updateToken . То же имя участника-пользователя, Microsoft Entra ID и идентификатор ресурса, которые были запрошены в предыдущем вызовеacquireToken(), должны быть переданы вupdateToken(), вместе с маркером, который был получен в конечном итоге. Этотupnпараметр предназначен только для ознакомления и обычно игнорируется пакетом SDK MAM. Приложение должно вызвать этот метод как можно скорее после возврата значения null из указанного обратного вызова.Предупреждение
Не звоните
updateToken()из вашей реализацииacquireToken().updateToken()следует использовать в случае, еслиacquireToken()невозможно получить маркер.Примечание.
Пакет SDK будет периодически вызывать
acquireToken()систему для получения маркера, поэтому вызовupdateToken()строго не требуется. Тем не менее это настоятельно рекомендуется, так как это поможет своевременно выполнить регистрацию и проверку политики защиты приложений.
Заметки о внедрении проверки подлинности
Приложениям рекомендуется получить маркеры Microsoft Entra перед вызовомregisterAccountForMAM. После регистрации учетной записи приложения будут получать обратный вызов метода зарегистрированного
MAMServiceAuthenticationCallbackacquireToken()пользователя в другом потоке. Предоставление действительного маркера в этом обратном вызове позволяет продолжить регистрацию. Приложение получает результат регистрации в уведомлении.Если приложение не возвращает действительный маркер Microsoft Entra, окончательным результатом попытки регистрации будет .
AUTHORIZATION_NEEDEDЕсли приложение получает этот результат через уведомление, рекомендуется ускорить процесс регистрации, получив маркер для учетной записи и ресурса, ранее запрошенных у acquireToken , и вызвав метод updateToken для повторного запуска процесса регистрации.Зарегистрированный
MAMServiceAuthenticationCallbackприложение также будет призван для получения маркера для периодической проверки обновления политики защиты приложений. Если приложению не удается предоставить маркер при запросе, оно не получит уведомление, но ему следует попытаться получить маркер и позвонитьupdateToken()в ближайшее удобное время, чтобы ускорить процесс проверки. Если маркер не предоставлен, обратный вызов может быть вызван при следующей попытке проверки.Для поддержки национальных облаков необходимо предоставить полномочия.
Если
MAMServiceAuthenticationCallbackExtendedинтерфейс реализован, то наследуемыйacquireToken()метод отMAMServiceAuthenticationCallbackне нужно реализовывать, так какMAMServiceAuthenticationCallbackExtendedинтерфейс предоставляет реализацию по умолчанию.
MAMEnrollmentManager и регистрация
Всякий раз, когда приложение добавляет учетную запись, оно должно зарегистрировать учетную запись в пакете SDK. Аналогичным образом при удалении учетной записи приложение должно отменить регистрацию этой учетной записи, чтобы указать, что приложение больше не должно применять политику для этой учетной записи. Если учетная запись была зарегистрирована в службе MAM, регистрация учетной записи будет отменена, и приложение будет очищено.
MAMEnrollmentManager имеет следующие методы регистрации учетных записей:
void registerAccountForMAM(String upn, String aadId, String tenantId);
void registerAccountForMAM(String upn, String aadId, String tenantId, String authority);
void unregisterAccountForMAM(String upn, String aadId);
Result getRegisteredAccountStatus(String upn, String aadId);
Чтобы зарегистрировать учетную запись для управления, приложение должно вызвать
registerAccountForMAM(). Учетная запись идентифицируется по имени участника-пользователя и идентификатору пользователя Microsoft Entra. Идентификатор клиента также необходим для сопоставления данных регистрации с клиентом Microsoft Entra учетной записи. Полномочия учетной записи также могут быть предоставлены для регистрации в определенных национальных облаках; Дополнительные сведения см. в разделе Регистрация Sovereign Cloud. Пакет SDK может попытаться зарегистрировать приложение для данной учетной записи в службе MAM. Если не удалось выполнить регистрацию, периодически предпринимаются попытки регистрации, пока регистрация не будет выполнена успешно или регистрация учетной записи не будет отменена. Период повторной попытки обычно составляет 12–24 часа. Пакет SDK предоставляет состояние попыток регистрации асинхронно с помощью уведомлений.Лучше всего звонить
registerAccountForMAMпосле входа пользователя в приложение и успешной проверки подлинности с помощью MSAL. Идентификатор пользователя Microsoft Entra, идентификатор клиента и полномочия учетной записи возвращаются из вызова проверки подлинности MSAL как частьIAccountсвязанного сIAuthenticationResult.- Учетная запись является источником
IAuthenticationResult.getAccount()метода и содержит соответствующие сведения об учетной записи. - AAD ID (также известный как Microsoft Entra ID или OID) происходит из
IAccount.getId()этого метода. - Идентификатор клиента берется из метода
IAccount.getTenantId(). - Авторитет исходит из метода
IAccount.getAuthority().
- Учетная запись является источником
Чтобы отменить регистрацию учетной записи в управлении Intune, приложение должно вызвать
unregisterAccountForMAM(). Если учетная запись успешно зарегистрирована и находится под управлением, пакет SDK отменит регистрацию учетной записи, а ее данные будут удалены. Периодические повторные попытки регистрации учетной записи будут прекращены. SDK предоставляет состояние запросов на отмену регистрации асинхронно посредством уведомления.
Примечания по реализации регистрации
Методы регистрации идемпотентные. Например, registerAccountForMAM зарегистрирует учетную запись и попытается зарегистрировать приложение, только если эта учетная запись еще не зарегистрирована, а unregisterAccountForMAM отменит регистрацию учетной записи, только если она зарегистрирована в настоящее время. Последующие вызовы являются безоперационными, поэтому нет ничего плохого в вызове этих методов более одного раза.
Нет никакой гарантии, что каждый вызов register/unregister имеет соответствующее уведомление о результате. Например, если
registerAccountForMAM()это вызывается для учетной записи, которая уже зарегистрирована, уведомление может не быть отправлено повторно для этого идентификатора. Кроме того, пакет SDK может отправлять уведомления, даже если приложение не вызвало эти методы, так как пакет SDK может периодически предпринимать попытки регистрации в фоновом режиме, а отмена регистрации может быть вызвана запросами на очистку, полученными из службы Intune.Способы регистрации можно вызвать для любого количества различных учетных записей, но в настоящее время успешно зарегистрироваться может только одна учетная запись. Если несколько учетных записей, лицензированных для Intune, для которых применяется политика защиты приложений, зарегистрированы одновременно или близко к одновремению, нет никакой гарантии, какая из них выиграет гонку.
Вы можете запросить MAMEnrollmentManager , чтобы узнать, зарегистрирована ли конкретная учетная запись, и узнать ее текущее состояние, используя метод getRegisteredAccountStatus . Если указанная учетная запись не зарегистрирована, этот метод возвращает значение null. Если учетная запись зарегистрирована, этот метод возвращает состояние учетной записи как одного из членов перечисления MAMEnrollmentManager.Result .
Регистрация в Sovereign Cloud
Azure поддерживает несколько физически изолированных облаков, называемых национальными облаками.
Если приложение поддерживает национальное облако, оно должно предоставить authority параметр .registerAccountForMAM()
Руководство MSAL
Для MSAL установите multiple_clouds_supported значение true в файле конфигурации MSAL.
{
"multiple_clouds_supported": true,
}
Коды результатов и состояний регистрации
При первой регистрации учетной записи она начинается в состоянии, указывая на PENDING то, что первоначальная попытка регистрации в службе MAM не завершена.
После завершения попытки регистрации будет отправлено уведомление с одним из кодов результатов из таблицы ниже.
Кроме того, метод getRegisteredAccountStatus возвращает состояние учетной записи, чтобы приложение всегда могло определить, применяются ли к этой учетной записи политики защиты приложений.
Если попытка регистрации завершается сбоем, состояние учетной записи может со временем измениться, так как пакет SDK повторно выполнит регистрацию в фоновом режиме.
| Код результата | Объяснение |
|---|---|
AUTHORIZATION_NEEDED |
Этот результат указывает на то, что маркер не был предоставлен зарегистрированным экземпляром MAMServiceAuthenticationCallback приложения или предоставленный маркер недействителен. Приложение должно получить действительный маркер и вызвать updateToken , если это возможно. |
NOT_LICENSED |
У учетной записи нет лицензии на Intune, или не удалось связаться со службой Intune MAM. Приложение должно продолжать работать в неуправляемом (нормальном) состоянии, и пользователь не должен блокироваться. Периодически будут предприниматься повторные попытки регистрации, если учетная запись станет лицензированной в будущем. |
ENROLLMENT_SUCCEEDED |
Попытка регистрации завершилась успешно, или учетная запись уже зарегистрирована. В случае успешной регистрации уведомление об обновлении политики отправляется до этого уведомления. Доступ к корпоративным данным должен быть разрешен. |
ENROLLMENT_FAILED |
Попытка регистрации не удалась. Дополнительные сведения можно найти в журналах устройств. Приложение не должно разрешать доступ к корпоративным данным в этом состоянии, так как ранее было определено, что учетная запись лицензирована для Intune. Все приложения должны обеспечивать несанкционированный доступ к корпоративным данным до тех пор, пока ENROLLMENT_SUCCEEDED приложение не получит их. |
WRONG_USER |
Только одна учетная запись на одно устройство может зарегистрировать приложение в службе MAM. Этот результат указывает на то, что для учетной записи, для которой был доставлен этот результат (вторая учетная запись), используется целевая политика MAM, но другая учетная запись уже зарегистрирована. Поскольку политика MAM не может быть применена для второй учетной записи, приложение не должно разрешать доступ к данным этой учетной записи (возможно, путем удаления учетной записи из приложения) до тех пор, пока регистрация этой учетной записи не будет выполнена успешно. Одновременно с предоставлением этого WRONG_USER результата MAM предлагает пользователю два варианта исправления: (1) удалить существующую зарегистрированную учетную запись, чтобы зарегистрировать вторую учетную запись, или (2) удалить вторую учетную запись (попытку, с которой попытка появлялась), чтобы запрос перестал появляться, а существующая учетная запись остается зарегистрированной. Если пользователь выберет вариант (1), вскоре можно будет зарегистрировать вторую учетную запись. Если пользователь выбирает вариант (2), MAM локально отменяет регистрацию второй учетной записи и сообщает UNENROLLMENT_SUCCEEDED для этой учетной записи через стандартное уведомление о результате регистрации; так как вторая учетная запись никогда не была зарегистрирована, выборочная очистка и уведомление о очистке не доставляется. Кроме того, MAM останавливает попытки повторной регистрации для этой учетной записи, поэтому запрос больше не появляется. Пока вторая учетная запись остается зарегистрированной (т. е. пользователь не выбрал вариант (2)), MAM периодически повторяет попытки регистрации. |
UNENROLLMENT_SUCCEEDED |
Отмена регистрации прошла успешно. |
UNENROLLMENT_FAILED |
Не удалось выполнить запрос на отмену регистрации. Дополнительные сведения можно найти в журналах устройств. Как правило, этого не происходит, если приложение проходит допустимое (не null и не пустое) имя участника-пользователя. Приложение не может принять прямое и надежное исправление. Если это значение получено при отмене регистрации действительного имени участника-пользователя, сообщите об ошибке команде Intune MAM. |
PENDING |
Выполняется первичная попытка регистрации учетной записи. Приложение может блокировать доступ к корпоративным данным до тех пор, пока не станет известен результат регистрации, но это не обязательно. |
COMPANY_PORTAL_REQUIRED |
Учетная запись лицензирована для Intune, но приложение не может быть зарегистрировано, пока на устройстве не будет установлено приложение "Корпоративный портал". Пакет SDK для приложений Intune пытается заблокировать доступ к приложению для указанной учетной записи и предлагает пользователю установить приложение "Корпоративный портал". При отправке этого уведомления приложению пакет SDK приложения Intune будет отображать неблокирующий пользовательский интерфейс поверх текущего действия, если действие в данный момент видно пользователю или вызывается следующее действиеonResume. Если пользователь отменит этот неблокирующий пользовательский интерфейс, пакет SDK для приложений Intune при следующем onCreate вызове для действия отобразит блокирующий пользовательский интерфейс и будет управляться текущим удостоверением (подробнее об устранении неполадок см. ниже). |
(Рекомендуется) Ведение журнала
Ведение журнала следует инициализировать заранее, чтобы получить максимальную отдачу от данных журнала.
Application.onMAMCreate() как правило, является лучшим местом для инициализации журналирования.
Чтобы получать журналы MAM в приложении, создайте обработчик Java и добавьте его в MAMLogHandlerWrapper.
Это вызывается publish() в обработчике приложения для каждого сообщения журнала.
/**
* Global log handler that enables fine grained PII filtering within MAM logs.
* To start using this you should build your own log handler and add it via
* MAMComponents.get(MAMLogHandlerWrapper.class).addHandler(myHandler, false);
* You may also remove the handler entirely via
* MAMComponents.get(MAMLogHandlerWrapper.class).removeHandler(myHandler);
*/
public interface MAMLogHandlerWrapper {
/**
* Add a handler, PII can be toggled.
* @param handler handler to add.
* @param wantsPII if PII is desired in the logs.
*/
void addHandler(final Handler handler, final boolean wantsPII);
/**
* Remove a handler.
* @param handler handler to remove.
*/
void removeHandler(final Handler handler);
}
Примечание.
PII расшифровывается как "личная информация" и может включать такие данные, как имена пользователей и имена участников-пользователей. Настоятельно рекомендуется исключить такие личные сведения из ваших собственных производственных журналов. Дополнительные сведения см. в политике конфиденциальности Майкрософт .
(Рекомендуется) Диагностические сведения
Приложение Корпоративный портал Intune поддерживает несколько вариантов сбора диагностических сведений. Корпоративный портал включает пользовательский интерфейс, который:
- Позволяет конечным пользователям собирать журналы корпоративного портала.
- Отображает метаданные устройства и учетной записи.
- Включает информацию для каждого приложения о текущей политике MAM.
Intune
Подробное описание данных, содержащихся в журналах корпоративного портала и в пользовательском интерфейсе диагностики, см. в разделе "Общие сведения о журналах корпоративного портала" в приложении.
Совет
Если вы проводите тестирование с учетной записью, в которой должна быть применена политика MAM, но диагностика не отображаются политики для имени пакета приложения, см. раздел "Устранение неполадок" ниже.
Приложения могут запускать этот пользовательский интерфейс диагностики, вызывая MAMPolicyManager.showDiagnostics(context).
Конечные пользователи также могут запускать диагностическую консоль Корпоративного портала через Microsoft Edge, вводя данные about:intunehelp в адресной строке.
Это необязательная функция, которая может помочь в отладке.
Эти сведения о диагностике доступны, только если на устройстве установлен Корпоративный портал.
Диалоговое окно предупреждения будет появляться всякий разshowDiagnostics, когда вызывается без установленного Корпоративного портала.
Критерии выхода
На этом этапе интеграции ваше приложение теперь может получать и применять политику защиты приложений. Выполните следующие тесты, чтобы проверить интеграцию.
Первый тест приложения политики
Сначала выполните следующий тест, чтобы ознакомиться со всеми возможностями конечных пользователей, работающими с применением политик в вашем приложении:
- Создайте политику защиты приложений Android в центре администрирования Microsoft Intune (подробнее см. раздел "Создание тестовой политики защиты приложений Android" на этапе 1). Для этого теста настройте политику:
- В разделе "Защита данных" присвойте параметру "Снимок экрана и Google Ассистент" значение "Блокировать".
- В разделе "Требования к доступу" оставьте параметры по умолчанию. Обратите внимание, что параметр "ПИН-код доступа" должен быть "Требовать".
- Убедитесь, что политика защиты приложений предназначена для вашего приложения. Скорее всего, вам потребуется вручную добавить имя пакета в мастере создания политики.
- Назначьте политику защиты приложений группе пользователей, содержащей тестовую учетную запись.
- На тестовом устройстве Android удалите другие приложения, интегрированные в пакет SDK, такие как Microsoft Outlook, Teams, OneDrive и Office. Кроме того, удалите приложения Корпоративный портал Intune и Microsoft Authenticator.
-
Совет
Удаление других приложений, интегрированных в пакет SDK, гарантирует, что вы тестируете интеграцию исключительно своего приложения.
-
- Установите приложение.
- Войдите в приложение с помощью тестовой учетной записи, на которую распространяется политика защиты приложений.
- Подтвердите, что вам предлагается установить корпоративный портал Intune Intune из Google Play.
-
Примечание.
Если на тестовом устройстве нет приложения Google Play Маркет, убедитесь, что вам было предложено установить Корпоративный портал Intune Intune из другого магазина приложений или с веб-сайта Майкрософт.
-
- Установите Корпоративный портал. Вам не нужно запускать Корпоративный портал или входить на Корпоративный портал.
- Вернитесь в приложение и при необходимости войдите в него еще раз.
- Убедитесь, что отображается экран получения доступа. Это означает, что пакет SDK успешно получил политику для этой учетной записи.
- Вам будет предложено установить ПИН-код приложения. Создайте ПИН-код.
- Перемещайтесь по приложению и попробуйте сделать снимки экрана. Учитывая, что в пакете SDK есть политика, эта возможность должна постоянно блокироваться на любом экране.
- Выйдите из приложения с помощью управляемой учетной записи.
- По возможности не входите в систему, перемещайтесь по приложению и попробуйте сделать снимки экрана. Теперь, когда учетная запись удалена, этот компонент не следует блокировать.
Это минимальный тест для подтверждения того, что приложение правильно зарегистрировало учетную запись, зарегистрировало обратный вызов проверки подлинности и отменило регистрацию учетной записи. Выполните следующие тесты, чтобы более тщательно проверить, как другие параметры политики защиты приложений изменяют поведение приложения.
Тесты защиты данных
Следующие тесты охватывают конкретные параметры защиты данных, настроенные в политике защиты приложений. При изменении параметров политики защиты приложений в Центре администрирования Microsoft Intune клиент обновляется не сразу. Советы по ускорению тестирования см. в разделе Быстрое тестирование с изменением политики .
Для этих тестов:
- Установите приложение.
- Установите корпоративный портал Intune Intune.
- Установите другое управляемое приложение с той же политикой, что и ваше приложение, которое может копировать и вставлять данные (например, Microsoft Office).
- Установите (или повторно используйте) любое неуправляемое приложение, которое может копировать и вставлять данные.
- Войдите в приложение с помощью тестовой управляемой учетной записи.
- Войдите в другое управляемое приложение с помощью управляемой тестовой учетной записи.
| Сценарий | Параметр политики защиты приложений | Шаги тестирования |
|---|---|---|
| Снимок экрана | Для параметра "Снимок экрана и Google Ассистент" установлено значение "Блокировать" | 1. Перейдите ко всем страницам приложения. 2. Попробуйте сделать снимок экрана на каждой странице. 3. Убедитесь, что снимки экрана заблокированы или что сохраненное изображение полностью пустое. |
| Копировать текст | Для параметра "Ограничивать вырезание, копирование и вставку между другими приложениями" установлено значение "Приложения, управляемые политикой" | 0. Если в приложении нет текста для копирования, пропустите. 1. Перейдите ко всем страницам приложения с копируемым текстом. 2. Копирование текста. 3. Переключитесь на неуправляемое приложение. 4. Попробуйте вставить данные в неуправляемом приложении. 5. Убедитесь, что вставка заблокирована. 6. Перейдите к другому управляемому приложению. 7. Попробуйте вставить в управляемом приложении. 8. Убедитесь, что вставка разрешена. |
| Вставка текста | Для параметра "Ограничивать вырезание, копирование и вставку между другими приложениями" установлено значение "Приложения, управляемые политикой" | 0. Если в вашем приложении нет входных текстовых элементов для вставки, пропустите. 1. Переключитесь на неуправляемое приложение. 2. Скопируйте текст из неуправляемого приложения. 3. Перейдите ко всем страницам приложения, на которых есть ввод текста. 5. Попробуйте вставить из неуправляемого приложения. 5. Убедитесь, что вставка заблокирована. 6. Переключитесь на другое управляемое приложение. 7. Скопируйте текст из другого управляемого приложения. 7. Перейдите ко всем страницам приложения, на которых есть введенный текст. 8. Попробуйте вставить из другого управляемого приложения. 9. Убедитесь, что вставка разрешена. |
| Печать | Для параметра "Печать данных организации" установлено значение "Блокировать" | 0. Если в приложении нет страниц или документов, которые можно распечатать, пропустите. 1. Перейдите ко всем страницам приложения, которые вызывают функцию печати Android. 2. Попробуйте печатать с каждой страницы. 3. Убедитесь, что печать заблокирована. |
| Ограничение веб-контента Microsoft Edge | Для параметра "Ограничить передачу веб-контента с помощью других приложений" установлено значение "Microsoft Edge" | 0. Если приложение не отображает веб-ссылки, пропустите этот шаг. 1. Перейдите ко всем страницам приложения, на которых можно отображать веб-ссылки или использовать ввод текста, преобразуемый в доступные для нажатия веб-ссылки. 2. Для каждой страницы выберите веб-ссылку. 3. Убедитесь, что вам предлагается установить Microsoft Edge, но веб-ссылка не открывается в другом браузере. |
| Ограниченная клавиатура | Для параметра "Одобренные клавиатуры" установлено значение "Обязательный" Параметр "Выбрать клавиатуры для утверждения" установлен только для пакета клавиатуры, на котором в настоящее время не установлен на вашем устройстве |
0. Если приложение не поддерживает ввод текста, пропустите этот шаг. 1. Перейдите ко всем страницам приложения, на которых есть способы ввода текста. 2. Выберите текстовый ввод, чтобы вызвать клавиатуру устройства. 3. Убедитесь, что вам предлагается установить настроенную утвержденную клавиатуру, но клавиатура текущего устройства не открывается. |
Тесты передачи данных
Параметры передачи данных — это подмножество функций защиты данных политики защиты приложений, которые управляют входом и выходом данных из управляемых приложений. Большинство приложений, поддерживающих отправку данных другим приложениям или получение данных от других приложений, также могут сохранять данные в локальном или облачном хранилище и открывать данные из них. Если приложение поддерживает такие возможности, вам потребуется реализовать дополнительную поддержку. Дополнительные сведения см. в разделе "Политика ограничения передачи данных между приложениями и расположениями устройств или облачных хранилищ".
Приложение может активно импортировать данные из других приложений, например Microsoft Outlook вкладывать файл из Microsoft OneDrive. Приложение также может пассивно получать данные из других приложений, например, Microsoft Office может открывать документ из вложения Microsoft Outlook. Параметр политики "Получать данные из других приложений" охватывает оба сценария.
Для этих тестов:
- Установите приложение.
- Установите корпоративный портал Intune Intune.
- Установите другое управляемое приложение с той же политикой, что и ваше приложение, которое может отправлять и получать данные (например, Microsoft Outlook).
- Установите (или повторно используйте) любое неуправляемое приложение, которое может отправлять и получать данные.
- Войдите в приложение с помощью тестовой управляемой учетной записи.
- Войдите в другое управляемое приложение с помощью управляемой тестовой учетной записи.
| Сценарий | Параметр политики защиты приложений | Шаги тестирования |
|---|---|---|
| Отправка данных в другие приложения | Для параметра "Отправлять данные организации в другие приложения" установлено значение "Приложения, управляемые политикой" | 0. Если приложение не может отправлять данные другим приложениям, пропустите этот шаг. 1. Перейдите туда, где приложение может отправлять данные. 2. Попытка отправки данных. 3. Подтвердите, что вы можете отправлять данные только в другие управляемые приложения. Вы увидите средство выбора приложений, в котором будут отображаться только управляемые приложения. |
| Импорт данных из других приложений | Для параметра "Получать данные из других приложений" установлено значение "Приложения, управляемые политикой" | 0. Если приложение не может импортировать данные из других приложений, пропустите этот шаг. 1. Перейдите к разделу, где приложение может импортировать данные из других приложений. 2. Попробуйте импортировать данные. 3. Подтвердите, что вы можете импортировать данные только из других управляемых приложений. Вы увидите средство выбора приложений, в котором будут отображаться только управляемые приложения. |
| Получение данных из неуправляемого приложения | Для параметра "Получать данные из других приложений" установлено значение "Приложения, управляемые политикой" | 0. Если приложение не может получать данные от других приложений, пропустите этот шаг. 1. Переключитесь на неуправляемое приложение. 2. Перейдите к разделу, откуда приложение может отправлять данные. 3. Попробуйте отправить данные из неуправляемого приложения в свое приложение. 4. Убедитесь, что ваше приложение не может получать данные из неуправляемого приложения. |
| Получение данных из управляемого приложения | Для параметра "Получать данные из других приложений" установлено значение "Приложения, управляемые политикой" | 0. Если приложение не может получать данные от других приложений, пропустите этот шаг. 1. Переключитесь на другое управляемое приложение. 2. Перейдите к разделу, откуда приложение может отправлять данные. 3. Попробуйте отправить данные из другого управляемого приложения в свое приложение. 4. Убедитесь, что ваше приложение может получать данные от другого управляемого приложения. |
Другие параметры защиты данных
Следующие параметры защиты данных не будут применены до тех пор, пока в приложение не будут внесены дополнительные изменения. На данном этапе вам не нужно тестировать эти параметры. Дополнительные сведения см. в разделе Этап 7: Функции участия в приложении .
| Сценарий | Параметр политики защиты приложений | Необходимо реализовать поддержку, если... |
|---|---|---|
| Сохранение копий данных | Сохранять копии данных организации | Приложение может сохранять данные в локальном или облачном хранилище. |
| Открытие данных из хранилища | Открывать данные в документах организации | Приложение может открывать данные из локального или облачного хранилища. |
| Управляемое содержимое уведомлений | Уведомления о данных организации | Ваше приложение включает пользовательские данные в уведомлениях. |
| Резервное копирование и восстановление | Резервное копирование данных организации в службы резервного копирования Android | Ваше приложение использует пользовательские данные совместно с функцией резервного копирования Android. |
Тесты условного запуска
Параметры условного запуска — это подмножество функций политики защиты приложений, которые ограничивают доступ к приложению на основе настраиваемых критериев, которые можно настроить как на уровне устройства, так и для конкретного приложения. Эти параметры включают как условия (например, "минимальная версия ОС"), так и действия (например, "заблокировать доступ"). Действия при условном запуске могут быть следующими:
- Предупреждение: конечный пользователь видит диалоговое окно предупреждения, если его устройство или приложение не соответствует условиям. У него по-прежнему будет доступ ко всем данным приложения.
- Блокировка доступа: конечный пользователь видит диалоговое окно предупреждения, если его устройство или приложение не соответствует условиям. Он не сможет войти в приложение и получить доступ к его данным, пока не будет соответствовать условиям или не удалит управляемую учетную запись из приложения.
- Очистка данных: все корпоративные данные, связанные с управляемой учетной записью, будут удалены, если устройство или приложение не удовлетворяет условиям. У пользователя не будет возможности выполнить условия до удаления данных.
Некоторые параметры условного запуска можно настроить с помощью нескольких значений и действий. Например, вы можете:
- Минимальная версия ОС, значение "10.0", действие настроено на "Предупредить".
- Минимальная версия ОС, значение "9.0", действие настроено на "Блокировать доступ"
- Минимальная версия ОС, значение "8.0", настроено действие "Очистка данных".
После выполнения действий интеграции на этом этапе приложение теперь поддерживает все функции условного запуска. Ознакомьтесь с функциональностью условного запуска, изменив элементы политики таким образом, чтобы тестовое устройство:
- Передает все настроенные параметры условного запуска.
- Не удается настроенному параметру условного запуска, настроенному на действие "Предупредить".
- Не удается настроенному параметру условного запуска, установленному на действие «Блокировать доступ».
- Не удается настроенному параметру условного запуска, настроенному на действие «Очистка данных».
Устранение неполадок
Устранение неполадок при тестировании приложения первой политики
После выполнения описанных выше шагов первого тестирования приложения политики вы можете столкнуться со следующим непредвиденным поведением:
После входа с помощью управляемой учетной записи не появляется запрос на установку корпоративного портала (шаг 7)
Сначала посетите Центр администрирования Intune и дважды проверка, что политика защиты приложений предназначена для вашей тестовой учетной записи.
Во-вторых, дважды проверьте исходный код на предмет вызовов registerAccountForMAM и реализации MAMServiceAuthenticationCallback.
Если первый не был вызван в нужное время и (или) второй не предоставил правильный действительный маркер, запрос Корпоративный портал не отобразится.
Наконец, либо поищите код результата регистрации в журналах (или отладке), либо явно вызовите getRegisteredAccountStatus учетную запись.
Такие коды, как NOT_LICENSED, могут указывать на проблемы с конфигурацией тестовой учетной записи.
После входа в систему (шаг 10) не появился экран получения доступа
Если Корпоративный портал ранее не был установлен, может потребоваться возобновить или полностью перезапустить приложение, чтобы открыть экран получения доступа и правильно применить политику. Это ожидаемый результат, основанный на том, как приложения, интегрированные с пакетом SDK, используют код в приложении "Корпоративный портал".
Если экран получения доступа по-прежнему не отображается даже после перезапуска приложения и повторного входа, возможно, пакету SDK не удается зарегистрировать учетную запись или получить политику для этой учетной записи.
Двойная проверка реализации MAMServiceAuthenticationCallbackфайла .
После входа в систему (шаг 11) не отображается экран для установки или ввода ПИН-кода приложения (шаг 11)
Есть ли на тестовом устройстве другие приложения, интегрированные в SDK? ПИН-код приложения является общим для всех управляемых приложений, а пакет SDK имеет глобальный таймер, предотвращающий запрос ПИН-кода для конечных пользователей при каждом запуске или возобновлении работы управляемого приложения.
В противном случае посетите Центр администрирования Intune и дважды проверка, что в политике защиты приложений включен ПИН-код приложения и что она нацелена на вашу тестовую учетную запись.
В крайнем случае перезапуск устройства приведет к сбросу таймера PIN-кода. Если экран ПИН-кода не отображается после перезагрузки устройства, скорее всего, он неправильно настроен в политике.
Я видел экран "Получить доступ", но снимки экрана по-прежнему разрешены (шаг 12)
При извлечении политики применяется неправильная политика. Сначала посетите Центр администрирования Intune и дважды проверка, что политика защиты приложений отключает снимки экрана и предназначена для вашей тестовой учетной записи. Во-вторых, используйте консоль диагностики (описанную выше) для проверки политики, которая была отключена для вашего приложения. Если обе политики подтверждают, что снимки экрана должны быть заблокированы, проверьте конфигурацию подключаемого модуля сборки Gradle, чтобы убедиться, что замены MAM производятся.
После выхода из системы приложение аварийно завершило работу или закрылось (шаг 13)
При отмене регистрации учетной записи, которая была ранее зарегистрирована и для которой применялась политика, данные, связанные с этой учетной записью, будут удалены пакетом SDK. Ожидается завершение процесса приложения.
Снимки экрана по-прежнему блокируются даже после выхода из системы (шаг 14)
Двойная проверка исходного кода для вызовов unregisterAccountForMAM().
Если политика по-прежнему применяется после выхода из системы, скорее всего, учетная запись не была должным образом отменена регистрация и отменена регистрация.
Устранение неполадок теста защиты данных
После выполнения указанных выше этапов тестов защиты данных вы можете столкнуться со следующим непредвиденным поведением:
Мое приложение не получает и не применяет политики
Сначала убедитесь, что политика защиты приложений предназначена для группы, содержащей тестовую учетную запись. Подробные сведения см. в статье "Как проверить установку политики защиты приложений в Microsoft Intune".
Во-вторых, проведите проверку сведений диагностики клиента, чтобы убедиться, что пакет SDK получил настроенную политику.
Если это не так, проверьте реализацию в своем приложении и вызовы MAMServiceAuthenticationCallback .registerAccountForMAM
Кроме того, проверка журналы или отладку для проверки MAMEnrollmentManager.Result.
Мое приложение может обмениваться данными с неуправляемым приложением
Подтвердите, что для параметра "Отправлять данные организации в другие приложения" установлено значение "Приложения, управляемые политикой". Проверьте в Центре администрирования Microsoft Intune, чтобы убедиться, что политика настроена и нацелена правильно. Проверьте сведения диагностики клиента, чтобы убедиться, что пакет SDK получил настроенную политику.
После этого, правильно ли настроена и получена политика, проверка применяются ли какие-либо политики: Мое приложение не получает и не применяет политики.
Мое приложение не может делиться данными с другим управляемым приложением
Подтвердите параметры политики защиты приложений, предназначенные для вашего приложения и другого управляемого приложения. Рекомендуется использовать одну и ту же политику для обоих приложений. Для политики, предназначенной для вашего приложения, для параметра "Отправка данных организации в другие приложения" должно быть установлено значение "Приложения, управляемые политикой". Проверьте политику, предназначенную для другого приложения; если для параметра "Получать данные из других приложений" установлено значение "Нет", такое поведение является ожидаемым.
Мое приложение может получать данные из неуправляемого приложения
Подтвердите, что для параметра "Получать данные из других приложений" установлено значение "Приложения, управляемые политикой". Проверьте в Центре администрирования Microsoft Intune, чтобы убедиться, что политика настроена и нацелена правильно. Проверьте сведения диагностики клиента, чтобы убедиться, что пакет SDK получил настроенную политику.
После этого, правильно ли настроена и получена политика, проверка применяются ли какие-либо политики: Мое приложение не получает и не применяет политики.
Мое приложение не может получать данные от другого управляемого приложения
Подтвердите параметры политики защиты приложений, предназначенные для вашего приложения и другого управляемого приложения. Рекомендуется использовать одну и ту же политику для обоих приложений. Для политики, предназначенной для вашего приложения, для параметра "Получение данных из других приложений" должно быть установлено значение "Приложения, управляемые политикой". Проверьте политику, предназначенную для другого приложения; если для параметра "Отправлять данные организации в другие приложения" установлено значение "Нет", такое поведение является ожидаемым.
Дальнейшие действия
После выполнения всех критериев выхода , указанных выше, ваше приложение успешно интегрируется в качестве единого удостоверения и может применять все основные политики защиты приложений. Последующие разделы: этап 5: множественная идентификация, этап 6: конфигурация приложений и этап 7: участие приложения Функции могут потребоваться или не потребоваться в зависимости от желаемой поддержки политики защиты приложений в приложении. Если вы не уверены, применим ли к вашему приложению какой-либо из этих разделов, вернитесь к разделу "Основные решения по интеграции пакета SDK".