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


Пакет SDK для приложений Intune для Android — основные сведения об интеграции С MAM

Пакет SDK для приложений Microsoft Intune для Android позволяет включить политики защиты приложений Intune (также известные как политики ПРИЛОЖЕНИЙ или MAM) в собственное приложение Java/Kotlin для Android. Приложение, управляемое Intune, интегрировано с пакетом SDK для приложений Intune. Администраторы Intune могут легко развертывать политики защиты приложений в приложении, управляемом Intune, когда Intune активно управляет приложением.

Примечание.

Это руководство разделено на несколько отдельных этапов. Начните с просмотра этапа 1. Планирование интеграции.

Этап 4. Основные компоненты интеграции MAM

Этап Goals

  • Включите строгий режим 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 со слабой структурой после Android StrictMode выполняет предопределенный набор проверок, которые вызывают ошибки среды выполнения при сбое. Строгий режим MAM не предназначен для включения в рабочих сборках; Вместо этого используйте его во внутренних сборках разработки, отладки и (или) dogfood приложения.

Чтобы включить строгий режим MAM, вызовите

MAMStrictMode.enable();

на ранних этапах инициализации приложения (например, Application.onCreate).

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

Обработка нарушений

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

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

MAMStrictMode.global().setHandler(handler);

где handler реализует MAMStrictViolationHandler.

Подавление проверок

Если проверка завершается сбоем в ситуации, когда приложение не делает ничего неправильного, сообщите об этом, как упоминалось выше. Тем временем может потребоваться отключить проверка обнаружен ложноположительный результат, по крайней мере во время ожидания обновленного пакета 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 (настоятельно рекомендуется), см. раздел Регистрация по умолчанию в приложении вместо продолжения этого раздела.

Чтобы успешно зарегистрировать учетную запись, приложение должно внести три изменения в код:

  1. Приложение должно реализовать и зарегистрировать экземпляр интерфейса MAMServiceAuthenticationCallback . Экземпляр обратного вызова должен быть зарегистрирован в методе onCreate() (или onMAMCreate()) подкласса Application.

  2. При создании учетной записи и успешном входе пользователя в MSAL приложение должно вызвать registerAccountForMAM.

  3. При удалении учетной записи приложение должно вызвать 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);
  1. Приложение должно реализовать интерфейс MAMServiceAuthenticationCallback или MAMServiceAuthenticationCallbackExtended интерфейс, позволяющий пакету SDK запрашивать маркер Microsoft Entra для указанной учетной записи и идентификатора ресурса. Экземпляр обратного вызова должен быть предоставлен в метод MAMEnrollmentManagerregisterAuthenticationCallback . Маркер может потребоваться в начале жизненного цикла приложения для повторных попыток регистрации или обновления политики защиты приложений проверка входов, поэтому обратный вызов должен быть зарегистрирован в onCreate() методе (или onMAMCreate()) подкласса Application приложения.

  2. Метод acquireToken должен получить маркер доступа для запрошенного идентификатора ресурса для данной учетной записи. Если ему не удается получить запрошенный маркер, он должен вернуть значение NULL.

    Совет

    Убедитесь, что приложение использует resourceId параметры и aadId , передаваемые в acquireToken() , чтобы получить правильный маркер. Следует resourceId использовать для создания соответствующих областей, а aadId — для передачи правильной учетной записи. Если приложению требуется центр Microsoft Entra для правильного получения маркераMAMServiceAuthenticationCallbackExtended, реализуйте интерфейс .

    class MAMAuthCallback implements MAMServiceAuthenticationCallback {
        public String acquireToken(String upn, String aadId, String resourceId) {
            final String[] scopes = {resourceId + "/.default"};
    
            final IAccount account = getAccount(aadId);
            if (account == null) {
                callback.onError(
                        new MsalUiRequiredException(MsalUiRequiredException.NO_ACCOUNT_FOUND, "no account found for " + aadId));
                return;
            }
    
            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;
      }
    }
    
  3. Если приложению не удается предоставить маркер, когда пакет SDK вызывает acquireToken() ( например, если автоматическая проверка подлинности завершается ошибкой и отображение пользовательского интерфейса неудобно), приложение может предоставить маркер позже, вызвав метод updateToken . То же имя участника-пользователя, Microsoft Entra идентификатор и идентификатор ресурса, запрошенные предыдущим вызовом , acquireToken() должны быть переданы в updateToken()вместе с маркером, который был получен. Приложение должно вызвать этот метод как можно скорее после возврата значения NULL из предоставленного обратного вызова.

    Предупреждение

    Не вызывайте updateToken() из реализации acquireToken(). updateToken() следует использовать в том случае, если acquireToken() не удается получить маркер.

    Примечание.

    Пакет SDK будет периодически вызывать acquireToken() для получения маркера, поэтому вызов updateToken() не является обязательным. Однако это настоятельно рекомендуется, так как это может помочь в своевременном завершении регистрации и политики защиты приложений проверка-ins.

Заметки о реализации проверки подлинности

  • Приложениям рекомендуется получать маркеры Microsoft Entra перед вызовомregisterAccountForMAM. После регистрации учетной записи приложения будут получать обратный вызов к зарегистрированному MAMServiceAuthenticationCallbackметоду acquireToken() в другом потоке. Предоставление допустимого маркера в этом обратном вызове позволяет продолжить регистрацию. Приложение получит результат регистрации с помощью уведомления.

  • Если приложение не возвращает допустимый маркер 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);
  1. Чтобы зарегистрировать учетную запись для управления, приложение должно вызвать .registerAccountForMAM() Учетная запись определяется как по имени участника-пользователя, так и по Microsoft Entra идентификатору пользователя. Идентификатор клиента также требуется для связывания данных регистрации с Microsoft Entra клиента учетной записи. Можно также предоставить полномочия учетной записи, чтобы разрешить регистрацию в определенных национальных облаках; Дополнительные сведения см. в разделе Регистрация в национальном облаке. Пакет SDK может попытаться зарегистрировать приложение для данной учетной записи в службе MAM. Если регистрация завершается сбоем, она будет периодически повторять регистрацию, пока регистрация не будет успешной или учетная запись не будет отменена. Период повтора обычно составляет 12–24 часа. Пакет SDK предоставляет состояние попыток регистрации асинхронно с помощью уведомлений.

  2. Лучшее время для вызова registerAccountForMAM — после входа пользователя в приложение и успешной проверки подлинности с помощью MSAL. Идентификатор пользователя Microsoft Entra учетной записи и идентификатор клиента возвращаются из вызова проверки подлинности MSAL в рамках, связанного IAccount с IAuthenticationResult.

    • Учетная запись поступает из IAuthenticationResult.getAccount() метода и содержит соответствующие сведения об учетной записи.
    • Идентификатор AAD получен из IAccount.getId() метода .
    • Идентификатор клиента поступает из IAccount.getTenantId() метода .
    • Центр исходит из IAccount.getAuthority() метода .
  3. Чтобы отменить регистрацию учетной записи из управления Intune, приложение должно вызвать .unregisterAccountForMAM() Если учетная запись успешно зарегистрирована и управляется, пакет SDK отменит регистрацию учетной записи и очистит ее данные. Периодические повторные попытки регистрации для учетной записи будут остановлены. Пакет SDK предоставляет состояние запросов на отмену регистрации асинхронно с помощью уведомления.

Примечания о реализации регистрации

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

  • Нет гарантии, что каждый вызов регистрации или отмены регистрации имеет соответствующее уведомление о результатах. Например, если registerAccountForMAM() вызывается для уже зарегистрированной учетной записи, уведомление может не быть отправлено повторно для этого удостоверения. Кроме того, пакет SDK может отправлять уведомления, даже если приложение не вызывало эти методы, так как пакет SDK может периодически пытаться зарегистрироваться в фоновом режиме, а отмена регистрации может активироваться запросами на очистку, полученными от службы Intune.

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

  • Вы можете запросить MAMEnrollmentManager , чтобы узнать, зарегистрирована ли определенная учетная запись, и получить ее текущее состояние с помощью метода getRegisteredAccountStatus . Если указанная учетная запись не зарегистрирована, этот метод возвращает значение NULL. Если учетная запись зарегистрирована, этот метод возвращает состояние учетной записи в качестве одного из членов перечисления MAMEnrollmentManager.Result .

Регистрация в национальном облаке

Azure поддерживает несколько физически изолированных облаков, известных как национальные или национальные облака. Если ваше приложение поддерживает суверенное облако, оно должно предоставить authority параметр для registerAccountForMAM().

Руководство ПО MSAL

Для MSAL задайте значение multiple_clouds_supportedtrue в файле конфигурации 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 предложит удалить существующую учетную запись. Если пользователь отвечает утвердительно, то через некоторое время можно будет зарегистрировать вторую учетную запись. Пока вторая учетная запись остается зарегистрированной, MAM будет периодически повторять регистрацию.
UNENROLLMENT_SUCCEEDED Отмена регистрации прошла успешно.
UNENROLLMENT_FAILED Сбой запроса на отмену регистрации. Дополнительные сведения можно найти в журналах устройств. Как правило, это не происходит до тех пор, пока приложение передает допустимое (ни пустое), ни пустое имя участника-пользователя. Нет прямого и надежного исправления, которое может предпринять приложение. Если это значение получено при отмене регистрации допустимого имени участника-пользователя, сообщите об ошибке команде 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 для диагностики intune

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

Совет

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

Приложения могут запускать этот пользовательский интерфейс диагностика путем MAMPolicyManager.showDiagnostics(context)вызова . Пользователи также могут запустить консоль диагностики Корпоративный портал через Microsoft Edge, введя about:intunehelp в адресной строке. Это необязательная функция, которая может помочь в отладке.

Эта диагностика информация доступна только при установке Корпоративный портал на устройстве. Диалоговое окно с предупреждением будет отображаться при вызове showDiagnostics без установленного Корпоративный портал.

Условия выхода

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

Первый тест приложения политики

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

  1. Создайте политику защиты приложений Android в центре администрирования Microsoft Intune (дополнительные сведения см. в разделе Создание тестовой политики защиты приложений Android на этапе 1). Для этого теста настройте политику:
    • В разделе Защита данных установите для параметра Захват экрана и Google Assistant значение Блокировать.
    • В разделе Требования к доступу оставьте параметры по умолчанию. В частности, "ПИН-код для доступа" должен иметь значение "Требовать".
  2. Убедитесь, что политика защиты приложений ориентирована на ваше приложение. Скорее всего, вам потребуется вручную добавить имя пакета в мастере создания политик.
  3. Назначьте политику защиты приложений группе пользователей, содержащей тестовую учетную запись.
  4. На тестовом устройстве Android удалите другие приложения, интегрированные с пакетом SDK, такие как Microsoft Outlook, Teams, OneDrive и Office. Кроме того, удалите приложение Корпоративный портал Intune и приложение Microsoft Authenticator.
    • Совет

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

  5. Установите приложение.
  6. Войдите в приложение с помощью тестовой учетной записи, предназначенной для политики защиты приложений.
  7. Убедитесь, что вам будет предложено установить Корпоративный портал Intune из Google Play.
    • Примечание.

      Если на тестовом устройстве нет приложения Google Play Store, убедитесь, что вам будет предложено установить Корпоративный портал Intune из другого магазина приложений или веб-сайта Майкрософт.

  8. Установите Корпоративный портал. Вам не нужно запускать Корпоративный портал или входить в Корпоративный портал.
  9. Вернитесь в приложение и при необходимости снова войдите в систему.
  10. Убедитесь, что появится запрос на экран Получить доступ. Это означает, что пакет SDK успешно получил политику для этой учетной записи.
  11. Вам будет предложено задать ПИН-код приложения. Создайте ПИН-код.
  12. Перейдите по приложению и попытайтесь сделать снимки экрана. Учитывая, что пакет SDK имеет политику, она должна постоянно блокироваться на любом экране.
  13. Выйдите из приложения под управлением управляемой учетной записи.
  14. Если это возможно без входа в систему, перейдите по приложению и попытайтесь сделать снимки экрана. Теперь, когда учетная запись удалена, ее не следует блокировать.

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

Тесты защиты данных

В следующих тестах рассматриваются определенные параметры защиты данных, настроенные в политике защиты приложений. При изменении параметров политики защиты приложений в Центре администрирования Microsoft Intune клиент не обновляется сразу. Советы по ускорению тестирования см. в статье Быстрое тестирование с изменением политики .

Для этих тестов:

  1. Установите приложение.
  2. Установите Корпоративный портал Intune.
  3. Установите другое управляемое приложение с той же политикой, что и ваше приложение, которое может копировать и вставлять данные (например, Microsoft Office).
  4. Установите (или повторно используйте) любое неуправляемые приложения, которые могут копировать и вставлять данные.
  5. Войдите в приложение с помощью тестовой управляемой учетной записи.
  6. Войдите в другое управляемое приложение с помощью управляемой тестовой учетной записи.
Сценарий Параметр политики защиты приложений Этапы тестирования
Снимок экрана Для параметра "Снимок экрана и 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" 0. Если приложение не отображает веб-ссылки, пропустите.
1. Перейдите ко всем страницам в приложении, на которых могут отображаться веб-ссылки или есть текстовые данные, отрисовываемые в веб-ссылки с возможностью перехода.
2. Для каждой страницы выберите веб-ссылку.
3. Убедитесь, что вам будет предложено установить Microsoft Edge, и веб-ссылка не открывается в другом браузере.
Клавиатура с ограниченным доступом Для параметра "Утвержденные клавиатуры" задано значение "Обязательный".
Для параметра "Выбрать клавиатуры для утверждения" установите только пакет клавиатуры, который на вашем устройстве в настоящее время не установлен.
0. Если в приложении нет текстовых входных данных, пропустите.
1. Перейдите ко всем страницам приложения с текстовым вводом.
2. Выберите текстовый ввод, чтобы открыть клавиатуру устройства.
3. Убедитесь, что вам будет предложено установить настроенную утвержденную клавиатуру, и текущая клавиатура устройства не открывается.

Тесты передачи данных

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

Ваше приложение может активно импортировать данные из других приложений, таких как Microsoft Outlook, присоединяя файл из Microsoft OneDrive. Приложение также может пассивно получать данные из других приложений, таких как Microsoft Office, открывая документ из вложения Microsoft Outlook. Параметр политики получения защиты приложений охватывает оба сценария.

Для этих тестов:

  1. Установите приложение.
  2. Установите Корпоративный портал Intune.
  3. Установите другое управляемое приложение с той же политикой, что и ваше приложение, которое может отправлять и получать данные (например, Microsoft Outlook).
  4. Установите (или повторно используйте) любое неуправляемые приложения, которые могут отправлять и получать данные.
  5. Войдите в приложение с помощью тестовой управляемой учетной записи.
  6. Войдите в другое управляемое приложение с помощью управляемой тестовой учетной записи.
Сценарий Параметр политики защиты приложений Этапы тестирования
Отправка данных в другие приложения Для параметра "Отправка данных организации в другие приложения" задайте значение "Приложения, управляемые политикой" 0. Если ваше приложение не может отправлять данные в другие приложения, пропустите.
1. Перейдите к месту, где приложение может отправлять данные.
2. Попытка отправки данных.
3. Убедитесь, что вы ограничены отправкой данных только в другие управляемые приложения. Вы увидите средство выбора приложений только с управляемыми приложениями.
Импорт данных из других приложений Для параметра "Получение данных из других приложений" задано значение "Приложения, управляемые политикой" 0. Если приложению не удается импортировать данные из других приложений, пропустите.
1. Перейдите к месту, где приложение может импортировать данные из других приложений.
2. Попытка импорта данных.
3. Убедитесь, что вы ограничены импортом данных только из других управляемых приложений. Вы увидите средство выбора приложений только с управляемыми приложениями.
Получение данных из неуправляемого приложения Для параметра "Получение данных из других приложений" задано значение "Приложения, управляемые политикой" 0. Если ваше приложение не может получать данные из других приложений, пропустите.
1. Переключитесь на неуправляемые приложения.
2. Перейдите к месту отправки данных.
3. Попытайтесь отправить данные из неуправляемого приложения в приложение.
4. Убедитесь, что ваше приложение не может получать данные из неуправляемого приложения.
Получение данных из управляемого приложения Для параметра "Получение данных из других приложений" задано значение "Приложения, управляемые политикой" 0. Если ваше приложение не может получать данные из других приложений, пропустите.
1. Переключитесь на другое управляемое приложение.
2. Перейдите к месту отправки данных.
3. Попытайтесь отправить данные из другого управляемого приложения в приложение.
4. Убедитесь, что ваше приложение может получать данные из другого управляемого приложения.

Другие параметры защиты данных

Следующие параметры защиты данных не будут применяться до тех пор, пока приложение не внося дополнительные изменения. На этом этапе не нужно тестировать эти параметры. Дополнительные сведения см. в разделе Этап 7. Функции участия в приложениях .

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

Тесты условного запуска

Параметры условного запуска — это подмножество функций политики защиты приложений, которые ограничивают доступ к приложению на основе настраиваемых условий для всего устройства или конкретного приложения. Эти параметры включают как условия (например, "минимальная версия ОС"), так и действия (например, "блокировать доступ"). Действия условного запуска могут быть следующими:

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

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

  • Минимальная версия ОС, значение "10.0", действие имеет значение "Warn".
  • Минимальная версия ОС, значение "9.0", действие "Блокировать доступ"
  • Минимальная версия ОС, значение "8.0", действие "Очистка данных".

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

  • Передает все настроенные параметры условного запуска.
  • Сбой настроенного параметра условного запуска, заданного действием "Предупреждать".
  • Сбой настроенного параметра условного запуска, заданного действием "Блокировать доступ".
  • Сбой настроенного параметра условного запуска, заданного действием "Очистка данных".

Устранение неполадок

Устранение неполадок при первом тестировании приложения политики

После выполнения описанных выше действий по первому тестированию приложения политики вы можете столкнуться со следующими непредвиденными ситуациями:

После входа с помощью управляемой учетной записи мне не будет предложено установить Корпоративный портал (шаг 7).

Сначала посетите Центр администрирования Intune и дважды проверка, что политика защиты приложений ориентирована на тестовую учетную запись.

Во-вторых, дважды проверка исходный код для вызовов registerAccountForMAM и реализации MAMServiceAuthenticationCallback. Если этот первый не вызывается в нужное время и (или) он не предоставил правильный маркер, вы не увидите запрос Корпоративный портал.

Наконец, просмотрите в журналах (или отладке) код результата регистрации или явным образом вызовите getRegisteredAccountStatus в учетной записи. Коды, такие как NOT_LICENSED, могут указывать на проблемы с конфигурацией тестовой учетной записи.

Экран Получить доступ не отображается после входа (шаг 10)

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

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

После входа в систему не отображается экран для установки или ввода ПИН-кода приложения (шаг 11)

Существуют ли другие приложения, интегрированные с пакетом SDK, на тестовом устройстве? ПИН-код приложения совместно используется всеми управляемыми приложениями, а пакет SDK имеет глобальный таймер, чтобы запретить пользователям запрашивать ПИН-код при каждом запуске или возобновлении запуска управляемого приложения.

В противном случае посетите Центр администрирования Intune и дважды проверка, что в политике защиты приложений включен ПИН-код приложения и предназначен для вашей тестовой учетной записи.

В крайнем случае перезапуск устройства сбросит таймер ПИН-кода. Если экран ПИН-кода не отображается после перезапуска устройства, он, скорее всего, настроен неправильно в политике.

Я видел экран "Получить доступ", но снимки экрана по-прежнему разрешены (шаг 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.