Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
Это руководство разделено на несколько отдельных этапов. Для начала ознакомьтесь с разделом Планирование интеграции.
Цели этапа
- Скачайте пакет SDK для приложений Intune.
- Узнайте, какие файлы включены в пакет SDK для приложений Intune.
- Ссылка на пакет SDK для приложений Intune в приложении.
- Убедитесь, что пакет SDK для приложений Intune правильно включен в сборку.
- Регистрация новых учетных записей для управления MAM после проверки подлинности с помощью MSAL.
- Чтобы удалить корпоративные данные, отмените регистрацию учетных записей при выходе.
- (Рекомендуется) Включите вход MAM в приложение.
Предварительные условия
Вам нужен компьютер macOS с Xcode 16.0 или более поздней версии.
Приложение должно быть предназначено для iOS 16.0 или более поздней версии.
Ознакомьтесь с Intune пакетом SDK для приложений для iOS. Распечатайте и сохраните копию условий лицензии для записей. Скачивая и используя пакет SDK для приложений Intune для iOS, вы соглашаетесь с такими условиями лицензионного соглашения. Если вы не принимаете их, не используйте программное обеспечение.
Скачайте файлы пакета SDK для приложений Intune для iOS на сайте GitHub.
Что находится в репозитории пакета SDK
IntuneMAMSwift.xcframework: динамическая платформа пакета SDK для приложений Intune. Рекомендуется связать эту платформу с приложением или расширениями, чтобы включить управление клиентскими приложениями Intune. Однако некоторые разработчики могут предпочесть преимущества статической платформы (IntuneMAMStatic.xcframework).
IntuneMAMStatic.xcframework: статическая платформа пакета SDK для приложений Intune. Разработчики могут связать статическую платформу, а не динамическую. Так как исполняемый код статической платформы внедряется непосредственно в двоичный файл приложения или расширения во время сборки, использование статической библиотеки дает некоторые преимущества производительности во время запуска. Однако если приложение содержит какие-либо расширения, связывание статической платформы с приложением и расширениями приводит к большему размеру пакета приложений. Исполняемый код внедряется в каждый двоичный файл приложения или расширения. В отличие от этого, при использовании динамической платформы приложения и расширения могут совместно использовать один и тот же Intune двоичный пакет SDK, что приводит к уменьшению размера приложения.
IntuneMAMSwiftStub.xcframework: платформа Swift Stub для пакета SDK для приложений Intune. Эта платформа является обязательной зависимостью от IntuneMAMSwift.xcframework и IntuneMAMStatic.xcframework, к которым должны связываться приложения и расширения.
IntuneMAMConfigurator— средство, используемое для настройки info.plist приложения или расширения с минимальными необходимыми изменениями для управления Intune. В зависимости от функциональности приложения или расширения может потребоваться внести дополнительные изменения в info.plist вручную.
libIntuneMAMSwift.xcframework: статическая библиотека пакета SDK для приложений Intune. Этот вариант пакета SDK для Intune MAM для iOS не рекомендуется использовать и удаляется в будущем обновлении. Рекомендуется не связывать статическую библиотеку, а вместо этого связать приложение или расширения с динамической платформой (IntuneMAMSwift.xcframework) или статической платформой (IntuneMAMStatic.xcframework) ранее упомянутой.
IntuneMAMResources.bundle: пакет ресурсов, содержащий ресурсы, на которые опирается пакет SDK. Пакет ресурсов требуется только для приложений, которые интегрируют устаревшую статическую библиотеку (libIntuneMAMSwift.xcframework) и удаляют ее в будущем обновлении.
Принцип работы пакета SDK для приложений Intune
Цель пакета SDK для приложений Intune для iOS — добавить возможности управления в приложения iOS с минимальными изменениями кода. Чем меньше код изменяется, тем меньше времени выхода на рынок, но не влияет на согласованность и стабильность мобильного приложения.
Поток процесса
На следующей схеме представлен поток процесса пакета SDK для приложений Intune для iOS:
Создание пакета SDK в мобильном приложении
Важно!
Intune регулярно выпускает обновления пакета SDK для приложений Intune. Регулярно проверка пакет SDK для приложений Intune для iOS для обновлений и включения в цикл выпуска программного обеспечения, чтобы приложения поддерживали последние параметры политики защиты приложений.
Чтобы включить пакет SDK для приложений Intune, выполните следующие действия.
Связывание или
IntuneMAMSwift.xcframeworkс целевым объектом. Перетащите пакет xcframework в список Платформы, Библиотеки и Внедренное содержимое целевого проекта.IntuneMAMStatic.xcframeworkПовторите эти действия дляIntuneMAMSwiftStub.xcframework. Для основного приложения выберите "Внедрение & Sign" в столбце "Внедрение" для обоих добавленных xcframeworks. Для любых расширений выберите "Не внедрять".
Добавьте в проект следующие платформы iOS:
- MessageUI.framework
- Security.framework
- CoreServices.framework
- SystemConfiguration.framework
- libsqlite3.tbd
- libc++.tbd
- ImageIO.framework
- LocalAuthentication.framework
- AudioToolbox.framework
- QuartzCore.framework
- WebKit.framework
- MetricKit.framework
Включите общий доступ к цепочке ключей (если он еще не включен), выбрав Возможности в каждом целевом проекте и включив параметр Общий доступ к цепочке ключей . Чтобы перейти к следующему шагу, требуется общий доступ к цепочке ключей.
Примечание.
Профиль подготовки должен поддерживать новые значения общего доступа к цепочке ключей. Группы доступа к цепочке ключей должны поддерживать подстановочные знаки. Вы можете проверка это, открыв файл .mobileprovision в текстовом редакторе, выполнив поиск по запросу keychain-access-groups и убедив, что у вас есть подстановочный знак. Например, вы можете:
<key>keychain-access-groups</key> <array> <string>YOURBUNDLESEEDID.*</string> </array>После включения общего доступа к цепочке ключей выполните действия, чтобы создать отдельную группу доступа, в которой пакет SDK для приложений Intune хранит свои данные. Группу доступа цепочки ключей можно создать с помощью пользовательского интерфейса или файла прав. Если вы используете пользовательский интерфейс для создания группы доступа к цепочке ключей, выполните следующие действия.
Если в мобильном приложении не определены группы доступа к цепочке ключей, добавьте идентификатор пакета приложения в качестве первой группы.
Добавьте общую группу
com.microsoft.intune.mamцепочки ключей в существующие группы доступа. Пакет SDK для приложений Intune использует эту группу доступа для хранения данных.Добавьте
com.microsoft.adalcacheв существующие группы доступа.
Примечание.
Если вы настроили MSAL для использования настраиваемой группы доступа к цепочке ключей
com.microsoft.adalcache, а не по умолчанию , указывать эту группу доступа к цепочке ключей здесь не нужно. Вместо этого укажите пользовательскую группу цепочки ключей. Также следует настроить Intune использование одной и той же настраиваемой группы доступа с помощью параметра ADALCacheKeychainGroupOverride в словаре IntuneMAMSettings Info.plist.Если вы редактируете файл прав напрямую, а не используете пользовательский интерфейс Xcode для создания групп доступа к цепочке ключей, предустановите группы
$(AppIdentifierPrefix)доступа к цепочке ключей с помощью (Xcode обрабатывает это автоматически). Например, вы можете:$(AppIdentifierPrefix)com.microsoft.intune.mam$(AppIdentifierPrefix)com.microsoft.adalcache
Примечание.
Файл прав — это XML-файл, уникальный для мобильного приложения. Он используется для указания специальных разрешений и возможностей в приложении iOS. Если у вашего приложения ранее не было файла прав, включение общего доступа к цепочке ключей (шаг 3) должно привести к созданию файла Xcode для вашего приложения. Убедитесь, что идентификатор пакета приложения является первой записью в списке.
Включите каждый протокол, по
UIApplication canOpenURLкоторому передает приложение, вLSApplicationQueriesSchemesмассив файла Info.plist приложения. Для каждого протокола, указанного в этом массиве, добавьте копию протокола, добавленную вместе с-intunemamмассивом. Кроме того, добавьте в массив следующие значения:http-intunemam,https-intunemam,microsoft-edge-http-intunemam,microsoft-edge-https-intunemam,smart-ns,zips,lacoonsecurity,wandera,lookoutwork-ase,skycure,betteractiveshield,smsec,mvisionmobile,scmxиintunemam-mtd. Если приложение использует протокол mailto:, также добавьтеms-outlook-intunemamв массив. Сохраните изменения, прежде чем переходить к следующему шагу.Если в списке LSApplicationQueriesSchemes в приложении заканчивается место, оно может удалить схемы "-intunemam" для приложений, которые, как известно, также реализуют пакет SDK Intune MAM. Когда приложение удаляет "scheme-intunemam" из списка LSApplicationQueriesSchemes,
canOpenURL()может возвращать неверные ответы для этих схем. Чтобы устранить эту проблему, вызовите[IntuneMAMPolicy isURLAllowed:url isKnownManagedAppScheme:YES]эту схему. Этот вызов возвращает значениеNO, если политика блокирует открытие URL-адреса. Если возвращается значение true, приложение может вызватьcanOpenURL()с пустым удостоверением, чтобы определить, можно ли открыть URL-адрес. Например, вы можете:BOOL __block canOpen = NO; if([policy isURLAllowed:urlForKnownManagedApp isKnownManagedAppScheme:YES]) { [[IntuneMAMPolicyManager instance] setCurrentThreadAccountId:"" forScope:^{ canOpen = [[UIApplication sharedApplication] canOpenURL:urlForKnownManagedApp]; }]; }Если приложение еще не использует FaceID, убедитесь, что для ключа NSFaceIDUsageDescription Info.plist настроено сообщение по умолчанию. Этот шаг необходим, чтобы iOS могла сообщить пользователю, как приложение намерено использовать FaceID. Параметр политики защиты приложений Intune позволяет использовать FaceID в качестве метода доступа к приложениям при настройке ИТ-администратором.
Используйте средство IntuneMAMConfigurator, входящее в репозиторий пакета SDK , чтобы завершить настройку Info.plist приложения. Средство имеет три параметра:
Property Как использовать эту возможность -Я <Path to the input plist>-E <Path to the entitlements file>-O (Необязательно) <Path to the output plist>Если параметр "-o" не указан, входной файл изменяется на месте. Это средство является идемпотентным и его следует запускать повторно при внесении изменений в info.plist приложения или его права. Также следует скачать и запустить последнюю версию средства при обновлении пакета SDK для Intune на случай изменения требований к конфигурации Info.plist в последнем выпуске.
Примечание.
Если у вас есть приложение SwiftUI, убедитесь, что UISceneConfigurations словарь в UIApplicationSceneManifest файле Info.pist не отсутствует или пуст. Сбой настройки этого параметра может помешать пакету SDK для Intune защитить приложение, несмотря на успешное применение политик защиты приложений.
Если для не задано определенное UISceneConfigurations значение, можно использовать следующую конфигурацию по умолчанию:
<key>UISceneConfigurations</key>
<dict>
<key>UIWindowSceneSessionRoleApplication</key>
<array>
<dict>
<key>UISceneConfigurationName</key>
<string>Default Configuration</string>
<key>UISceneDelegateClassName</key>
<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
</dict>
</array>
</dict>
Параметры и возможности сборки Xcode
В параметрах сборки Xcode для параметра "Strip Swift Symbols" (STRIP_SWIFT_SYMBOLS) и "Enable Bitcode" (ENABLE_BITCODE) должно быть установлено значение НЕТ. Если ваше приложение включает в себя функцию повышенной безопасности, доступную в Xcode 26+, необходимо отключить параметры "Проверка подлинности указателей" и "Включить память платформы только для чтения".
Интеграция расширения поставщика файлов
Расширения поставщика файлов имеют определенные требования к памяти, которые могут затруднить интеграцию полного пакета SDK. Чтобы упростить это, существует статическая библиотека libIntuneMAMSwiftFileProvider.xcframework, которая представляет собой урезаемую версию пакета SDK специально для расширений поставщика файлов. Обратите внимание, что эта библиотека используется для части расширения FileProvider, отличной от пользовательского интерфейса. Необходимо интегрировать полный пакет SDK в расширение пользовательского интерфейса поставщика файлов.
Чтобы интегрировать одну из этих библиотек с расширением поставщика файлов, выполните действия по интеграции пакета SDK в качестве статической библиотеки. Обязательно включите ContainingAppBundleId параметр.
Интеграция расширения поставщика нереплицированных файлов
Приложение использует нереплицированный поставщик файлов, если оно реализует протокол NSFileProviderExtension. Все поставщики файлов, созданные до iOS 16.0, не удаляются.
В — startProvidingItemAtURL:completionHandler: проверка, следует ли шифровать файлы с помощью [[экземпляр IntuneMAMPolicy]shouldFileProviderEncryptFiles]. Используйте API encryptFile:forAccountId: в IntuneMAMFileProtectionManager для фактического шифрования файлов. Кроме того, вы можете предоставить общий доступ к копии файла, когда требуется шифрование, так как вы не хотите хранить зашифрованную копию файла в облачном хранилище.
In - importDocumentAtURL:toParentItemIdentifier:completionHandler: проверка, шифруется ли файл с помощью API isFileEncrytped: в IntuneMAMFileProtectionManager. Если это так, расшифруйте его с помощью API decryptFile:toCopyPath: IntuneMAMFileProtectionManager. В приложениях с несколькими удостоверениями также проверка api canReceiveSharedFile: в IntuneMAMPolicy целевого владельца, чтобы определить, может ли владелец получить файл.
Интеграция расширения реплицированного поставщика файлов
Приложение использует поставщик реплицированных файлов, если оно реализует протокол NSFileProviderReplicatedExtension (добавлен в iOS 16.0).
In - fetchContentsForItemWithIdentifier:version:request:completionHandler: проверка, следует ли шифровать файлы с помощью [[экземпляр IntuneMAMPolicy]shouldFileProviderEncryptFiles]. Используйте API encryptFile:forAccountId: в IntuneMAMFileProtectionManager для фактического шифрования файлов. Если требуется шифрование, вы можете предоставить общий доступ к копии файла, так как вы не хотите хранить зашифрованную копию файла в облачном хранилище.
В — createItemBasedOnTemplate:fields:contents:options:request:completionHandler: проверка, шифруется ли файл с помощью API isFileEncrypted: в IntuneMAMFileProtectionManager. Если это так, расшифруйте его с помощью API decryptFile:toCopyPath: IntuneMAMFileProtectionManager. В приложениях с несколькими удостоверениями также проверка api canReceiveSharedFile: в IntuneMAMPolicy целевого владельца, чтобы определить, может ли владелец получить файл.
В любом месте, где поставщик реплицированных файлов создает и передает в систему NSFileProviderItem, вызовите API protectFileProviderItem:forAccountId: IntuneMAMFileProtectionManager с удостоверением владельца элемента. В зависимости от того, где создается и сохраняется объект NSFileProviderItem в расширении, это может потребоваться сделать в каждом из методов протокола NSFileProviderReplicatedExtension.
Настройка параметров пакета SDK для приложений Intune
Вы можете использовать словарь IntuneMAMSettings в файле Info.plist приложения для настройки и настройки пакета SDK для приложений Intune. Если словарь IntuneMAMSettings не отображается в файле Info.plist, его следует создать.
В словаре IntuneMAMSettings можно определить следующие поддерживаемые параметры для настройки пакета SDK для приложений Intune.
В предыдущих разделах рассматриваются некоторые из этих параметров, а некоторые применяются не ко всем приложениям.
| Setting | Тип | Определение | Обязательный? |
|---|---|---|---|
| ADALClientId | String | Идентификатор клиента Microsoft Entra приложения. | Обязательный для всех приложений. |
| ADALAuthority | String | Используемый Microsoft Entra центр приложения. Следует использовать собственную среду, в которой настроены Microsoft Entra учетные записи. Дополнительные сведения см. в разделе Параметры конфигурации приложения. | Требуется, если приложение является пользовательским бизнес-приложением, созданным для использования в одной организации или Microsoft Entra клиенте. Если это значение отсутствует, используется общий центр Microsoft Entra (поддерживается только для мультитенантных приложений). |
| ADALRedirectUri | String | URI перенаправления Microsoft Entra приложения. | ADALRedirectUri или ADALRedirectScheme требуется для всех приложений. |
| ADALRedirectScheme | String | Схема перенаправления Microsoft Entra ID приложения. Его можно использовать вместо ADALRedirectUri, если URI перенаправления приложения имеет формат scheme://bundle_id. |
ADALRedirectUri или ADALRedirectScheme требуется для всех приложений. |
| ADALLogOverrideDisabled | Логический | Указывает, направляет ли пакет SDK все журналы MSAL (включая вызовы MSAL из приложения, если таковые имеются) в собственный файл журнала. Значение по умолчанию — NO. Установите значение ДА, если приложение задает собственный обратный вызов журнала MSAL. | Необязательный параметр. |
| ADALCacheKeychainGroupOverride | String | Указывает группу цепочки ключей, используемую для кэша MSAL, а не "com.microsoft.adalcache". Система автоматически префиксирует этот параметр во время выполнения. |
Необязательный параметр. |
| AppGroupIdentifiers | Массив строк | Массив групп приложений из раздела прав com.apple.security.application-groups приложения. |
Требуется, если приложение использует группы приложений. |
| ContainingAppBundleId | String | Указывает идентификатор пакета приложения, содержащего расширение. | Требуется для расширений iOS. |
| AutoEnrollOnLaunch | Логический | Указывает, должно ли приложение пытаться автоматически зарегистрироваться при запуске, если обнаружено существующее управляемое удостоверение, но оно еще не сделало этого. Значение по умолчанию — NO. Примечание: Если управляемое удостоверение не найдено или в кэше MSAL нет допустимого маркера, регистрация автоматически завершается ошибкой, если MAMPolicyRequired не задано значение ДА. |
Необязательный параметр. Значение по умолчанию — NO. |
| MAMPolicyRequired | Логический | Указывает, заблокировано ли запуск приложения, если у него нет политики защиты приложений Intune. Значение по умолчанию — NO. Примечание: Приложения не могут быть отправлены в App Store с параметром ДА. Если задано значение ДА, AutoEnrollOnLaunch также должно быть задано значение ДА. |
Необязательный параметр. Значение по умолчанию — NO. |
| MAMPolicyWarnAbsent | Логический | Указывает, будет ли приложение предупреждать пользователя во время запуска, если нет Intune политики защиты приложений. Примечание: Пользователи по-прежнему могут продолжить работу после закрытия предупреждения. |
Необязательный параметр. Значение по умолчанию — NO. |
| MultiIdentity | Логический | Указывает, поддерживает ли приложение несколько удостоверений. Дополнительные сведения см. в документации по нескольким удостоверениям. | Необязательный параметр. Значение по умолчанию — NO. |
| MultiIdentityCancelDisabled | Логический | Отключает кнопку отмены на экранах пользовательского интерфейса Intune условного запуска в приложениях с несколькими удостоверениями. Если для этого параметра не задано значение ДА, приложение должно обрабатывать IntuneMAMSwitchIdentityResultCanceled код сбоя. См . раздел Переключение удостоверений. |
Необязательный параметр. Значение по умолчанию — NO. |
| SafariViewControllerBlockedOverride | Логический | Отключает перехватчики SafariViewController Intune, чтобы включить проверку подлинности MSAL через SFSafariViewController, SFAuthSession или ASWebAuthSession. Примечание: Кнопка настроенного действия отображается только в том случае, если представление неуправляемое и имеет значение ДА. |
Необязательный параметр. Значение по умолчанию — NO. Предупреждение: При неправильном использовании может привести к утечке данных. |
| SplashIconFile SplashIconFile~ipad |
String | Указывает файл значка Intune-заставки (запуска). | Необязательный параметр. |
| SplashDuration | Номер | Минимальное время в секундах, когда отображается экран запуска Intune. Значение по умолчанию — 1.5. | Необязательный параметр. |
| BackgroundColor | String | Задает цвет фона для компонентов пользовательского интерфейса пакета SDK для Intune.
#XXXXXX Принимает или шестнадцатеричное значение без знака фунта. |
Необязательный параметр. По умолчанию используется системный цвет фона. |
| ForegroundColor | String | Задает цвет переднего плана или текста для компонентов пользовательского интерфейса. Принимает или шестнадцатерично #XXXXXX без знака фунта. |
Необязательный параметр. По умолчанию используется цвет системной метки. |
| AccentColor | String | Задает цвет акцента для компонентов пользовательского интерфейса (кнопки, выделение поля ПИН-кода). Принимает или шестнадцатерично #XXXXXX без знака фунта. |
Необязательный параметр. По умолчанию — системный синий. |
| SecondaryBackgroundColor | String | Указывает дополнительный цвет фона для экранов MTD. Принимает или шестнадцатерично #XXXXXX без знака фунта. |
Необязательный параметр. По умолчанию — белый. |
| SecondaryForegroundColor | String | Задает дополнительный цвет переднего плана для экранов MTD. Принимает или шестнадцатерично #XXXXXX без знака фунта. |
Необязательный параметр. Значение по умолчанию — серый. |
| SupportsDarkMode | Логический | Указывает, соответствуют ли цвета пользовательского интерфейса системным темным режимом, если явные цвета не заданы. | Необязательный параметр. Значение по умолчанию — ДА. |
| MAMTelemetryDisabled | Логический | Указывает, отправляются ли данные телеметрии в серверную часть. | Необязательный параметр. Значение по умолчанию — NO. |
| MAMTelemetryUsePPE | Логический | Отправляет данные телеметрии в серверную часть PPE. Полезно для тестирования приложений, чтобы данные не смешивались с данными клиентов. | Необязательный параметр. Значение по умолчанию — NO. |
| MaxFileProtectionLevel | String | Задает максимум NSFileProtectionType , поддерживаемый приложением. Переопределяет политику, если служба отправляет более высокий уровень.Возможные значения: NSFileProtectionComplete, NSFileProtectionCompleteUnlessOpen, NSFileProtectionCompleteUntilFirstUserAuthentication, NSFileProtectionNone.Заметить: С NSFileProtectionCompleteпомощью приложение теряет доступ к защищенным файлам примерно через 10 секунд после блокировки устройства, что может привести к прерыванию таких компонентов, как локальные базы данных. Приложения с пользовательским интерфейсом блокировки должны использовать NSFileProtectionCompleteUntilFirstUserAuthentication. |
Необязательный параметр. Значение по умолчанию — NSFileProtectionComplete. |
| OpenInActionExtension | Логический | Для расширения Открыть в действии задайте значение ДА. См. раздел Совместное использование данных с помощью UIActivityViewController. | Необязательный параметр. |
| TreatAllWebViewsAsUnmanaged | Логический | Обрабатывает все WebView как неуправляемые для принудительного применения вырезанных, копирования и вставки. См. раздел Отображение веб-содержимого. | Необязательный параметр. Значение по умолчанию — NO. |
| WebViewHandledURLSchemes | Массив строк | Схемы URL-адресов, обрабатываемые WebView приложения. | Требуется, если WebView обрабатывает ссылки или навигацию JavaScript. |
| DocumentBrowserFileCachePath | String | При использовании UIDocumentBrowserViewControllerзадайте путь (относительно домашнего каталога приложения) для расшифрованных управляемых файлов. |
Необязательный параметр. Значение по умолчанию — /Documents/. |
| VerboseLoggingEnabled | Логический | Включает подробное ведение журнала. | Необязательный параметр. Значение по умолчанию — NO. |
| FinishLaunchingAtStartup | Логический | Требуется при использовании [BGTaskScheduler registerForTaskWithIdentifier:]; должен иметь значение ДА. |
Необязательный параметр. Значение по умолчанию — NO. |
| ValuesToScrubFromLogging | Массив строк | Значения конфигурации приложения, которые следует удалить из журналов. Также можно задать с помощью valuesToScrubFromLogging в IntuneMAMSettings. |
Необязательный параметр. |
Получение политики защиты приложений
Обзор
Чтобы получить Intune политику защиты приложений, приложения должны инициировать запрос на регистрацию с помощью службы Intune MAM. Приложения можно настроить в центре администрирования Intune для получения политики защиты приложений с регистрацией устройств или без нее. Управление мобильными приложениями (MAM) позволяет управлять приложениями с помощью Intune без необходимости регистрации устройства в Intune управления мобильными устройствами (MDM). В обоих случаях для получения политики требуется регистрация в службе Intune MAM.
Важно!
Пакет SDK для приложений Intune для iOS использует 256-разрядные ключи шифрования, если шифрование включено политиками защиты приложений. Все приложения должны иметь текущую версию пакета SDK, чтобы разрешить общий доступ к защищенным данным.
Приложения, которые уже используют ADAL или MSAL
Примечание.
библиотека аутентификация Azure AD (ADAL) и Azure AD API Graph устарели. Подробности см. в статье Обновление приложений, чтобы использовать библиотеку проверки подлинности Майкрософт (MSAL) и API Microsoft Graph
Приложения, которые уже используют MSAL, должны вызывать registerAndEnrollAccountId метод в экземпляре IntuneMAMEnrollmentManager после успешной проверки подлинности пользователя:
/*
* This method adds the account to the list of registered accounts.
* An enrollment request starts immediately.
* @param accountId The Entra object ID of the account to be registered with the SDK
*/
(void)registerAndEnrollAccountId:(NSString *_Nonnull)accountId;
При успешном входе MSAL отправляет результат в объект MSALResult. Используйте tenantProfile.identifier в MSALResult в качестве параметра accountId для API.
registerAndEnrollAccountId Вызывая метод , пакет SDK регистрирует учетную запись пользователя и пытается зарегистрировать приложение от имени этой учетной записи. Если регистрация по какой-либо причине завершается сбоем, пакет SDK автоматически повторяет регистрацию через 24 часа. В целях отладки приложение может получать уведомления от делегата о результатах любых запросов на регистрацию.
После вызова этого API приложение может продолжать работать в обычном режиме. Если регистрация прошла успешно, пакет SDK уведомляет пользователя о необходимости перезапуска приложения. В это время пользователь может немедленно перезапустить приложение.
[[IntuneMAMEnrollmentManager instance] registerAndEnrollAccountId:@"3ec2c00f-b125-4519-acf0-302ac3761822"];
Приложения, не использующие ADAL или MSAL
Приложения, которые не входят в систему пользователя с помощью ADAL или MSAL, по-прежнему могут получать политику защиты приложений из службы Intune MAM, вызывая API, чтобы пакет SDK обрабатывал такую проверку подлинности. Приложения должны использовать этот метод, если они не прошли проверку подлинности пользователя с помощью Microsoft Entra ID но по-прежнему необходимо получить политику защиты приложений для защиты данных. Например, если для входа в приложение используется другая служба проверки подлинности или приложение вообще не поддерживает вход. Для этого приложение может вызвать метод в loginAndEnrollAccount экземпляре IntuneMAMEnrollmentManager :
/**
* Creates an enrollment request, which starts immediately.
* If no token can be retrieved for the identity, the user is prompted
* to enter their credentials, after which enrollment is retried.
* @param identity The UPN of the account to be logged in and enrolled.
*/
(void)loginAndEnrollAccount: (NSString *)identity;
Вызывая этот метод, пакет SDK запрашивает у пользователя учетные данные, если существующий маркер не найден. Затем пакет SDK пытается зарегистрировать приложение в службе Intune MAM от имени указанной учетной записи пользователя. Метод можно вызвать с "nil" в качестве удостоверения. В этом случае пакет SDK регистрируется с существующим управляемым пользователем на устройстве (если MDM) или запрашивает имя пользователя, если существующий пользователь не найден.
Если регистрация завершается сбоем, приложение должно рассмотреть возможность повторного вызова этого API в будущем в зависимости от сведений о сбое. Приложение может получать уведомления через делегата о результатах любых запросов на регистрацию.
После вызова этого API приложение может продолжить работу в обычном режиме. Если регистрация прошла успешно, пакет SDK уведомляет пользователя о необходимости перезапуска приложения.
После управления приложением необходимо запросить значение идентификатора объекта Microsoft Entra с помощью enrolledAccountId в IntuneMAMEnrollmentManager. Используйте его для всех API-интерфейсов пакета SDK для MAM, которые приложение использует для этой зарегистрированной учетной записи.
Пример:
[[IntuneMAMEnrollmentManager instance] loginAndEnrollAccount:@"user@foo.com"];
Разрешите Intune обрабатывать проверку подлинности и регистрацию при запуске
Если вы хотите, чтобы пакет SDK для Intune обрабатывал всю проверку подлинности с помощью ADAL/MSAL и регистрации до завершения запуска приложения, а приложению всегда требуются политики защиты приложений, вам не нужно использовать loginAndEnrollAccount API. Для следующих параметров можно задать значение ДА в словаре IntuneMAMSettings в info.plist приложения.
| Setting | Тип | Определение |
|---|---|---|
| AutoEnrollOnLaunch | Логический | Указывает, должно ли приложение пытаться автоматически зарегистрироваться при запуске, если обнаружено существующее управляемое удостоверение, но оно еще не сделало этого. Значение по умолчанию — NO. Примечание: Если управляемое удостоверение не найдено или в кэше ADAL/MSAL нет допустимого маркера для удостоверения, попытка регистрации автоматически завершается ошибкой без запроса учетных данных, если приложение также не установит MAMPolicyRequired значение YES. |
| MAMPolicyRequired | Логический | Указывает, блокируется ли запуск приложения, если у него нет политики защиты приложений Intune. Значение по умолчанию — NO. Примечание: Приложения не могут быть отправлены в App Store с MAMPolicyRequired параметром ДА. Если задано значение MAMPolicyRequiredДА, AutoEnrollOnLaunch также должно быть задано значение ДА. |
Если вы выберете этот вариант для приложения, вам не придется обрабатывать перезапуск приложения после регистрации.
Отмена регистрации учетных записей пользователей
Перед выходом пользователя из приложения приложение должно отменить регистрацию пользователя из пакета SDK. Этот процесс обеспечивает следующее:
Повторные попытки регистрации больше не выполняются для учетной записи пользователя.
защита приложений политика удалена.
Корпоративные данные удаляются, если приложение инициирует выборочную очистку (необязательно).
Перед выходом пользователя приложение должно вызвать следующий метод в экземпляре IntuneMAMEnrollmentManager :
/*
* This method removes the provided account from the list of
* registered accounts. Once removed, if the account enrolled
* the application, the account is un-enrolled.
* @note In the case where an un-enroll is required, this method blocks
* until the Intune APP AAD token is acquired, then returns. This method must be called before
* the user is removed from the application (so that required AAD tokens are not purged
* before this method is called).
* @param accountId The object ID of the account to be removed.
* @param doWipe If YES, a selective wipe if the account is un-enrolled
*/
(void)deRegisterAndUnenrollAccountId:(NSString *)accountId withWipe:(BOOL)doWipe;
Этот метод необходимо вызвать до удаления маркеров Microsoft Entra учетной записи пользователя. Пакету SDK требуются маркеры Microsoft Entra учетной записи пользователя, чтобы отправлять определенные запросы к службе Intune MAM от имени пользователя.
Если приложение самостоятельно удаляет корпоративные данные пользователя, doWipe флагу можно задать значение false. В противном случае приложение может инициировать выборочную очистку с помощью пакета SDK. Это действие приводит к вызову делегата выборочной очистки приложения.
Пример:
[[IntuneMAMEnrollmentManager instance] deRegisterAndUnenrollAccountId:@"3ec2c00f-b125-4519-acf0-302ac3761822" withWipe:YES];
Уведомления о состоянии, результатах и отладке
Приложение может получать уведомления о состоянии, результатах и отладке о следующих запросах к службе Intune MAM:
- Запросы на регистрацию
- Запросы на обновление политики
- Запросы на отмену регистрации
Уведомления предоставляются с помощью методов делегата в IntuneMAMEnrollmentDelegate.h:
/**
* Called when an enrollment request operation is completed.
* @param status status object containing debug information
*/
(void)enrollmentRequestWithStatus:(IntuneMAMEnrollmentStatus *)status;
/**
* Called when a MAM policy request operation is completed.
* @param status status object containing debug information
*/
(void)policyRequestWithStatus:(IntuneMAMEnrollmentStatus *)status;
/**
* Called when a un-enroll request operation is completed.
* @Note: when a user is un-enrolled, the user is also de-registered with the SDK
* @param status status object containing debug information
*/
(void)unenrollRequestWithStatus:(IntuneMAMEnrollmentStatus *)status;
Эти методы делегата IntuneMAMEnrollmentStatus возвращают объект, который содержит следующие сведения:
- Идентификатор учетной записи (идентификатор объекта) учетной записи, связанной с запросом
- Удостоверение (UPN) учетной записи, связанной с запросом
- Код состояния, указывающий результат запроса.
- Строка ошибки с описанием кода состояния
- Объект
NSError. Этот объект определяется вIntuneMAMEnrollmentStatus.hвместе с определенными кодами состояния, которые могут быть возвращены.
Пример кода
Ниже приведены примеры реализаций методов делегата.
- (void)enrollmentRequestWithStatus:(IntuneMAMEnrollmentStatus*)status
{
NSLog(@"enrollment result for identity %@ with status code %ld", status.accountId, (unsigned long)status.statusCode);
NSLog(@"Debug Message: %@", status.errorString);
}
- (void)policyRequestWithStatus:(IntuneMAMEnrollmentStatus*)status
{
NSLog(@"policy check-in result for identity %@ with status code %ld", status.accountId, (unsigned long)status.statusCode);
NSLog(@"Debug Message: %@", status.errorString);
}
- (void)unenrollRequestWithStatus:(IntuneMAMEnrollmentStatus*)status
{
NSLog(@"un-enroll result for identity %@ with status code %ld", status.accountId, (unsigned long)status.statusCode);
NSLog(@"Debug Message: %@", status.errorString);
}
Перезапуск приложения
Когда приложение впервые получает политики MAM, оно должно перезапустить, чтобы применить необходимые перехватчики. Чтобы уведомить приложение о необходимости перезагрузки, пакет SDK предоставляет метод делегата в IntuneMAMPolicyDelegate.h.
- (BOOL) restartApplication
Возвращаемое значение этого метода сообщает пакету SDK, если приложение должно обработать необходимый перезапуск:
Если возвращается значение true, приложение должно обработать перезапуск.
Если возвращается значение false, пакет SDK перезапускает приложение после возврата этого метода. В пакете SDK сразу же отображается диалоговое окно с сообщением о необходимости перезапуска приложения.
Примечание.
Приложения .NET MAUI не требуют перезапуска.
Условия выхода
После настройки подключаемого модуля сборки или интеграции средства командной строки в процесс сборки убедитесь, что он успешно работает:
- Убедитесь, что сборка успешно компилируется и выполняет сборку.
- Запустите скомпилированное приложение, войдите в систему с помощью Microsoft Entra пользователя, который не предназначен для политики защиты приложений, и убедитесь, что приложение работает должным образом.
- Выйдите и повторите этот тест с пользователем Microsoft Entra, на который нацелена политика защиты приложений, и убедитесь, что приложение теперь управляется Intune и перезапущено.
На этом этапе интеграции приложение теперь может получать и применять политику защиты приложений. Выполните следующие тесты, чтобы проверить интеграцию.
Первый тест приложения политики
Сначала выполните следующий тест, чтобы ознакомиться с полным взаимодействием с конечным пользователем приложения политики в приложении:
- Создайте политику защиты приложений iOS в Центре администрирования Microsoft Intune. Для этого теста настройте политику:
- В разделе Требования к доступу оставьте параметры по умолчанию. В частности, "ПИН-код для доступа" должен иметь значение "Требовать".
- Убедитесь, что политика защиты приложений ориентирована на ваше приложение. Может потребоваться вручную добавить идентификатор пакета приложения в мастер создания политик.
- Назначьте политику защиты приложений группе пользователей, содержащей тестовую учетную запись.
- Установите приложение.
- Войдите в приложение с помощью тестовой учетной записи, предназначенной для политики защиты приложений.
- Убедитесь, что вам будет предложено Intune управляемого экрана, и убедитесь, что запрос перезапустит приложение. На этом экране указано, что пакет SDK успешно извлекает политику для этой учетной записи.
- Создайте ПИН-код, когда вам будет предложено задать ПИН-код приложения.
- Выйдите из приложения под управлением управляемой учетной записи.
- Перейдите по приложению и убедитесь, что приложение работает должным образом, если это возможно, без входа в систему.
Этот список шагов представляет собой *минимальный тест, чтобы убедиться, что приложение правильно регистрирует учетную запись, регистрирует обратный вызов проверки подлинности и отменяет регистрацию учетной записи. Выполните следующие тесты, чтобы более тщательно проверить, как другие параметры политики защиты приложений изменяют поведение приложения.
Дальнейшие действия
После выполнения всех условий выхода перейдите к этапу 4. Функции участия в приложениях.