Привязки Xamarin для приложений Microsoft Intune

Важно!

Xamarin.Forms превратился в пользовательский интерфейс мультиплатформенных приложений .NET (MAUI). Существующие проекты Xamarin следует перенести в .NET MAUI. Дополнительные сведения об обновлении проектов Xamarin до .NET см. в документации по обновлению Xamarin до .NET & .NET MAUI .

Поддержка Xamarin прекращена с 1 мая 2024 г. для всех пакетов SDK для Xamarin, включая Xamarin.Forms и Xamarin Bindings для приложений Intune. Сведения о поддержке Intune на платформах Android и iOS см. в статье Пакет SDK для приложений Intune для .NET MAUI — Androidи пакет SDK приложений Microsoft Intune для MAUI.iOS.

Обзор

Привязки Xamarin пакета SDK для приложений Intune позволяют использовать политику защиты приложений Intune в приложениях iOS и Android, созданных с помощью Xamarin. Привязки позволяют разработчикам легко встраивать функции защиты приложений Intune в приложение на основе Xamarin.

Привязки Xamarin пакета SDK для приложений Microsoft Intune позволяют включать политики защиты приложений Intune (также известные как политики приложений или MAM) в приложения, разработанные с помощью Xamarin. Приложение с поддержкой MAM интегрировано с пакетом SDK для приложений Intune. ИТ-администраторы могут развертывать политики защиты приложений в мобильном приложении, когда Intune активно управляет приложением.

Что поддерживается?

Компьютеры разработчика

  • Windows (Visual Studio версии 15.7 и более поздних версий)
  • macOS

Платформы мобильных приложений

  • Android
  • iOS

Сценарии управления мобильными приложениями Intune

  • Intune MAM
  • Устройства, зарегистрированные в Intune MDM
  • Сторонние устройства, зарегистрированные в EMM

Приложения Xamarin, созданные с помощью привязок Xamarin пакета SDK для приложений Intune, теперь могут получать политики защиты приложений Intune как на зарегистрированных устройствах управления мобильными устройствами (MDM) Intune, так и на незарегистрированных устройствах.

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

Ознакомьтесь с условиями лицензии. Распечатайте и сохраните копию условий лицензии для записей. Скачивая и используя Xamarin Bindings пакета SDK для приложений Intune, вы соглашаетесь с такими условиями лицензии. Если вы не принимаете их, не используйте программное обеспечение.

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

Если приложение уже настроено для использования MSAL и имеет собственный пользовательский идентификатор клиента, используемый для проверки подлинности с помощью Microsoft Entra ID, убедитесь, что выполнены действия, чтобы предоставить приложению Xamarin разрешения для службы управления мобильными приложениями (MAM) Intune. Следуйте инструкциям в разделе "Предоставление приложению доступа к службе управления мобильными приложениями Intune" руководства по началу работы с пакетом SDK для Intune.

Вопросы безопасности

Чтобы предотвратить потенциальный подделывание, раскрытие информации и атаки на повышение привилегий, выполните следующие действия.

  • Убедитесь, что разработка приложений Xamarin выполняется на безопасной рабочей станции.
  • Убедитесь, что привязки из допустимого источника Майкрософт:
  • Настройте конфигурацию NuGet для проекта, чтобы он доверял подписанным, неизмененному пакетам NuGet. Дополнительные сведения см. в статье Установка подписанных пакетов .
  • Защитите выходной каталог, содержащий приложение Xamarin. Рассмотрите возможность использования каталога уровня пользователя для выходных данных.

Включение политик защиты приложений Intune в мобильном приложении iOS

Важно!

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

  1. Добавьте пакет NuGet Microsoft.Intune.MAM.Xamarin.iOS в проект Xamarin.iOS.

  2. Выполните общие действия, необходимые для интеграции пакета SDK для приложений Intune в мобильное приложение iOS. Вы можете начать с шага 3 инструкций по интеграции из руководства разработчика по пакету SDK для приложений Intune для iOS. Вы можете пропустить последний шаг в этом разделе запуска IntuneMAMConfigurator, так как это средство входит в пакет Microsoft.Intune.MAM.Xamarin.iOS и будет запущено автоматически во время сборки. Важно! Включение общего доступа к цепочке ключей для приложения немного отличается в Visual Studio от Xcode. Откройте список прав приложения и убедитесь, что включен параметр "Включить цепочку ключей" и в этом разделе добавлены соответствующие группы общего доступа к цепочке ключей. Затем убедитесь, что список прав указан в поле "Пользовательские права" параметров "Подписывание пакета iOS" проекта для всех соответствующих сочетаний конфигурации и платформы.

  3. После добавления привязок и правильной настройки приложения ваше приложение может начать использовать API пакета SDK для Intune. Для этого необходимо включить следующее пространство имен:

    using Microsoft.Intune.MAM;
    
  4. Чтобы начать получать политики защиты приложений, приложение должно быть зарегистрировано в службе Intune MAM. Если ваше приложение не использует библиотеку проверки подлинности Майкрософт (MSAL) для проверки подлинности пользователей и вы хотите, чтобы пакет SDK для Intune обрабатывал проверку подлинности, приложение должно предоставить имя участника-пользователя методу LoginAndEnrollAccount IntuneMAMEnrollmentManager:

     IntuneMAMEnrollmentManager.Instance.LoginAndEnrollAccount([NullAllowed] string identity);
    

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

    Если приложение уже использует MSAL для проверки подлинности пользователей, вы можете настроить единый вход (SSO) между приложением и пакетом SDK для Intune. Во-первых, необходимо переопределить параметры Microsoft Entra по умолчанию, используемые пакетом SDK Для Intune, с параметрами вашего приложения. Это можно сделать с помощью словаря IntuneMAMSettings в info.plist приложения, как упоминалось в руководстве разработчика по пакету SDK для приложений Intune для iOS, или сделать это в коде с помощью свойств переопределения идентификатора Microsoft Entra класса IntuneMAMSettings. Подход Info.plist рекомендуется использовать для приложений, параметры MSAL которых являются статическими, а свойства переопределения — для приложений, определяющих эти значения во время выполнения. После настройки всех параметров единого входа приложение должно предоставить имя участника-пользователя методу RegisterAndEnrollmentManager IntuneMAMEnrollmentManager после успешной проверки подлинности:

    IntuneMAMEnrollmentManager.Instance.RegisterAndEnrollAccount(string identity);
    

    Приложения могут определить результат попытки регистрации, реализовав метод EnrollmentRequestWithStatus в подклассе IntuneMAMEnrollmentDelegate и задав для свойства Delegate IntuneMAMEnrollmentManager экземпляр этого класса.

    После успешной регистрации приложения могут определить имя участника-пользователя зарегистрированной учетной записи (если ранее неизвестно), запросив следующее свойство:

     string enrolledAccount = IntuneMAMEnrollmentManager.Instance.EnrolledAccount;
    

Включение политик защиты приложений Intune в мобильном приложении Android

  1. Добавьте пакет NuGet Microsoft.Intune.MAM.Xamarin.Android в проект Xamarin.Android.
    1. Для приложения Xamarin.Forms добавьте пакет NuGet Microsoft.Intune.MAM.Remapper.Tasks в проект Xamarin.Android.
  2. Выполните общие действия, необходимые для интеграции пакета SDK для приложений Intune в мобильное приложение Android, а дополнительные сведения см. в этом документе.

Интеграция с Xamarin.Android

Полный обзор интеграции пакета SDK для приложений Intune см. в руководстве разработчика microsoft Intune App SDK для Android. При чтении руководства и интеграции пакета SDK для приложений Intune с приложением Xamarin в следующих разделах описаны различия между реализацией собственного приложения Android, разработанного на Java, и приложением Xamarin, разработанным на C#. Эти разделы должны рассматриваться как дополнительные и не могут служить заменой для чтения руководства в полном объеме.

Remapper

Начиная с выпуска 1.4428.1 пакет Microsoft.Intune.MAM.Remapper можно добавить в приложение Xamarin.Android в качестве средств сборки для замены классов, методов и системных служб MAM. Если включен параметр Remapper, то эквивалентные MAM части замены разделов Переименованные методы и Приложение MAM будут автоматически выполняться при сборке приложения.

Чтобы исключить класс из MAM-ification с помощью Remapper, в файл проектов .csproj можно добавить следующее свойство.

  <PropertyGroup>
    <ExcludeClasses>Semicolon separated list of relative class paths to exclude from MAM-ification</ExcludeClasses>
  </PropertyGroup>

Примечание.

Remapper в настоящее время предотвращает отладку в приложениях Xamarin.Android. Для отладки приложения рекомендуется выполнить интеграцию вручную.

Переименованные методы

Во многих случаях метод, доступный в классе Android, помечается как окончательный в классе замены MAM. В этом случае класс замены MAM предоставляет метод с аналогичным именем (суффиксом MAM), который следует переопределить. Например, при наследовавеся от MAMActivity, вместо переопределения OnCreate() и вызова base.OnCreate()должен Activity переопределять OnMAMCreate() и вызывать base.OnMAMCreate().

Приложение MAM

Приложение должно определить Android.App.Application класс. Если MAM интегрируется вручную, он должен наследоваться от MAMApplication. Убедитесь, что подкласс правильно украшен атрибутом [Application] и переопределяет (IntPtr, JniHandleOwnership) конструктор.

    [Application]
    class TaskrApp : MAMApplication
    {
    public TaskrApp(IntPtr handle, JniHandleOwnership transfer)
        : base(handle, transfer) { }

Примечание.

Проблема с привязками MAM Xamarin может привести к сбою приложения при развертывании в режиме отладки. В качестве обходного Debuggable=false решения атрибут должен быть добавлен в Application класс, а android:debuggable="true" флаг должен быть удален из манифеста, если он был задан вручную.

Включение функций, требующих участия в приложении

Пример. Определение того, требуется ли ПИН-код для приложения

MAMPolicyManager.GetPolicy(currentActivity).IsPinRequired;

Пример. Определение основного пользователя Intune

IMAMUserInfo info = MAMComponents.Get<IMAMUserInfo>();
return info?.PrimaryUser;

Пример. Определение того, разрешено ли сохранение на устройстве или в облачное хранилище

MAMPolicyManager.GetPolicy(currentActivity).GetIsSaveToLocationAllowed(SaveLocation service, String username);

Регистрация для получения уведомлений из пакета SDK

Приложение должно зарегистрироваться для получения уведомлений из пакета SDK, создав MAMNotificationReceiver и зарегистрировав его в MAMNotificationReceiverRegistry. Это делается путем предоставления получателя и типа уведомления, требуемого в , как показано в App.OnMAMCreateпримере ниже.

public override void OnMAMCreate()
{
    // Register the notification receivers
    IMAMNotificationReceiverRegistry registry = MAMComponents.Get<IMAMNotificationReceiverRegistry>();
    foreach (MAMNotificationType notification in MAMNotificationType.Values())
    {
        registry.RegisterReceiver(new ToastNotificationReceiver(this), notification);
    }
    ...

Диспетчер регистрации MAM

IMAMEnrollmentManager mgr = MAMComponents.Get<IMAMEnrollmentManager>();

Интеграция с Xamarin.Forms

Для Xamarin.Forms приложений Microsoft.Intune.MAM.Remapper пакет автоматически выполняет замену классов MAM, внедряя MAM классы в иерархию классов часто используемых Xamarin.Forms классов.

Примечание.

Интеграция Xamarin.Forms должна выполняться в дополнение к описанной выше интеграции с Xamarin.Android. Remapper работает по-разному для приложений Xamarin.Forms, поэтому замена MAM вручную по-прежнему должна быть выполнена.

После добавления Remapper в проект необходимо выполнить замены, эквивалентные MAM. Например, FormsAppCompatActivity и FormsApplicationActivity могут по-прежнему использоваться в приложении при условии, что переопределения OnCreate для и OnResume заменяются эквивалентами OnMAMCreate MAM и OnMAMResume соответственно.

    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        protected override void OnMAMCreate(Bundle savedInstanceState)
        {
            base.OnMAMCreate(savedInstanceState);
            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
            LoadApplication(new App());
        }

Если замена не выполнена, могут возникнуть следующие ошибки компиляции до тех пор, пока не будет выполнена замена:

  • Ошибка компилятора CS0239. Эта ошибка обычно встречается в этой форме 'MainActivity.OnCreate(Bundle)': cannot override inherited member 'MAMAppCompatActivityBase.OnCreate(Bundle)' because it is sealed. Это ожидаемо, потому что, когда remapper изменяет наследование классов Xamarin, будут выполнены sealed некоторые функции, а вместо этого добавляется новый вариант MAM для переопределения.
  • Ошибка компилятора CS0507: эта ошибка обычно встречается в этой форме 'MyActivity.OnRequestPermissionsResult()' cannot change access modifiers when overriding 'public' inherited member .... Когда remapper изменяет наследование некоторых классов Xamarin, некоторые функции-члены будут изменены на public. При переопределении любой из этих функций потребуется изменить модификаторы доступа для этих переопределений public .

Примечание.

Remapper повторно записывает зависимость, которую Visual Studio использует для автозавершения IntelliSense. Поэтому при добавлении remapper для IntelliSense может потребоваться перезагрузить и перестроить проект, чтобы правильно распознать изменения.

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

  • Если при запуске приложения отображается пустой белый экран, может потребоваться принудительное выполнение вызовов навигации в основном потоке.
  • Xamarin Bindings пакета SDK для Intune не поддерживают приложения, использующие кроссплатформенную платформу, например MvvmCross, из-за конфликтов между классами MvvmCross и Intune MAM. Хотя некоторые клиенты, возможно, успешно выполнили интеграцию после перемещения приложений в обычный Xamarin.Forms, мы не предоставляем явных рекомендаций или подключаемых модулей для разработчиков приложений, использующих MvvmCross.

Приложение "Корпоративный портал"

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

Примечание.

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

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

Поддержка

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