Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
Это руководство разделено на несколько отдельных этапов. Начните со знакомства со статьей "Планирование интеграции".
Цели этапа
- Скачайте пакет 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. Разработчики могут выбрать компоновку статической платформы вместо динамической. Так как исполняемый код из статической инфраструктуры встраивается непосредственно в двоичный файл приложения или расширения во время сборки, использование статической библиотеки дает некоторые преимущества в производительности во время запуска. Однако если приложение включает расширения, связывание статической платформы с приложением и расширениями приводит к увеличению размера набора приложений. Исполняемый код встраивается в каждый двоичный файл приложения или расширения. Напротив, при использовании динамической платформы приложения и расширения могут использовать один и тот же двоичный файл SDK Intune, что приводит к уменьшению размера приложения.
IntuneMAMSwiftStub.xcframework: платформа Swift Stub для приложений 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целевой объект илиIntuneMAMStatic.xcframeworkна него: перетащите пакет xcframework в список Frameworks, Libraries, and Embedded Content целевого проекта. Повторите эти действия дляIntuneMAMSwiftStub.xcframeworkфайла . Для основного приложения выберите "Embed & Sign" в столбце "Embed" для обоих добавленных 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)доступа keychain (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-intunemamsmart-nswanderalacoonsecuritylookoutwork-aseskycurezipsmicrosoft-edge-https-intunemamsmsecmvisionmobilebetteractiveshieldscmxи .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 Как использовать эту возможность - i <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 для параметров сборки Xcode для параметров "Удалить символы Swift" (STRIP_SWIFT_SYMBOLS) и "Включить растровый код" (ENABLE_BITCODE) должно быть установлено значение "НЕТ". Если ваше приложение включает в себя возможность «Повышенная безопасность», доступную в Xcode 26+, вы ДОЛЖНЫ отключить параметры «Указатели аутентификации» и «Включить память платформы только для чтения».
Интеграция расширения поставщика файлов
Расширения поставщика файлов имеют определенные требования к памяти, которые могут затруднить интеграцию полного пакета SDK. Чтобы упростить задачу, существует статическая библиотека libIntuneMAMSwiftFileProvider.xcframework, которая представляет собой урезанную версию пакета SDK специально для расширений файловых провайдеров. Обратите внимание, что эта библиотека предназначена для части расширения FileProvider, не относящейся к пользовательскому интерфейсу. Необходимо интегрировать полный пакет SDK в расширение пользовательского интерфейса поставщика файлов.
Чтобы интегрировать одну из этих библиотек с расширением файлового поставщика, выполните действия по интеграции пакета SDK в качестве статической библиотеки. Не забудьте включить ContainingAppBundleId параметр.
Интеграция нереплицируемого расширения поставщика файлов
Ваше приложение использует нереплицируемый поставщик файлов, если оно реализует протокол NSFileProviderExtension. Все поставщики файлов, созданные до iOS 16.0, не реплицируются.
In - startProvidingItemAtURL:completionHandler: проверка, следует ли шифровать файлы с помощью [[Экземпляр IntuneMAMPolicy]shouldFileProviderEncryptFiles]. Используйте encryptFile:forAccountId: API в IntuneMAMFileProtectionManager для фактического шифрования файлов. Кроме того, делитесь копией файла, если требуется шифрование, так как вы не хотите хранить зашифрованную копию файла в облачном хранилище.
In - importDocumentAtURL:toParentItemIdentifier:completionHandler: проверка, зашифрован ли файл с помощью API isFileEncrytped: в IntuneMAMFileProtectionManager. Если да, расшифруйте его с помощью decryptFile:toCopyPath: API IntuneMAMFileProtectionManager. В приложениях с несколькими удостоверениями также выполните проверку по API canReceiveSharedFile: в IntuneMAMPolicy целевого владельца, чтобы определить, может ли владелец получить файл.
Интеграция реплицированного расширения поставщика файлов
Ваше приложение использует реплицированного поставщика файлов, если оно реализует протокол NSFileProviderReplicatedExtension (добавлен в iOS 16.0).
В - fetchContentsForItemWithIdentifier:version:request:completionHandler: проверка, следует ли шифровать файлы с помощью [[Экземпляр IntuneMAMPolicy]shouldFileProviderEncryptFiles]. Используйте API encryptFile:forAccountId: в IntuneMAMFileProtectionManager для фактического шифрования файлов. Делитесь копией файла, если требуется шифрование, так как вы не хотите хранить зашифрованную копию файла в облачном хранилище.
In - createItemBasedOnTemplate:fields:contents:options:request:completionHandler: проверка, зашифрован ли файл с помощью API isFileEncrypted: в IntuneMAMFileProtectionManager. Если да, расшифруйте его с помощью decryptFile:toCopyPath: API 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 приложения. | Требуется для всех приложений. |
| АДААуторство | 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. Установите значение YES, если приложение устанавливает собственный обратный вызов журнала 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. |
| Многопрофильность | Логический | Указывает, поддерживает ли приложение несколько удостоверений. Дополнительные сведения см. в документации по нескольким удостоверениям. | Необязательный параметр. Значение по умолчанию — NO. |
| MultiIdentityCancelDisabled | Логический | Отключает кнопку "Отмена" на экранах условного запуска пользовательского интерфейса Intune в приложениях с несколькими удостоверениями. Если значение "ДА" не присвоено, приложение должно обрабатывать IntuneMAMSwitchIdentityResultCanceled код ошибки. См. раздел Переключение удостоверений. |
Необязательный параметр. Значение по умолчанию — NO. |
| SafariViewControllerBlockedOverride | Логический | Отключает крючки SafariViewController Intune для включения проверки подлинности MSAL через SFSafariViewController, SFAuthSession или ASWebAuthSession. Примечание. Настроенная кнопка действий отображается только в том случае, если представление является неуправляемым и для нее задано значение ДА. |
Необязательный параметр. Значение по умолчанию — NO. Предупреждение: При неправильном использовании может произойти утечка данных. |
| Файл SplashIconFile SplashIconFile~ipad |
String | Указывает файл значка Intune Splash (запуска). | Необязательный параметр. |
| SplashDuration | Номер | Минимальное время (в секундах), в течение которого отображается экран запуска Intune. Значение по умолчанию — 1,5. | Необязательный параметр. |
| BackgroundColor | String | Определяет цвет фона для компонентов пользовательского интерфейса Intune SDK. Принимает #XXXXXX шестнадцатеричное значение без знака решетки. |
Необязательный параметр. По умолчанию используется системный цвет фона. |
| ForegroundColor | String | Определяет цвет переднего плана или текста для компонентов пользовательского интерфейса. Принимает или шестнадцатеричный знак #XXXXXX без знака фунта. |
Необязательный параметр. По умолчанию используется системный цвет метки. |
| АкцентЦвет | String | Определяет цвет элементов для компонентов пользовательского интерфейса (кнопки, подсветка поля ПИН-кода). Принимает или шестнадцатеричный знак #XXXXXX без знака фунта. |
Необязательный параметр. По умолчанию используется системный синий цвет. |
| SecondaryBackgroundColor | String | Определяет дополнительный цвет фона для экранов MTD. Принимает или шестнадцатеричный знак #XXXXXX без знака фунта. |
Необязательный параметр. По умолчанию — белый. |
| SecondaryForegroundColor | String | Определяет дополнительный цвет переднего плана для экранов MTD. Принимает или шестнадцатеричный знак #XXXXXX без знака фунта. |
Необязательный параметр. По умолчанию — серый. |
| ПоддерживаетDarkMode | Логический | Указывает, соответствуют ли цвета пользовательского интерфейса темному режиму системы, если явные цвета не установлены. | Необязательный параметр. Значение по умолчанию — YES. |
| MAMTelemetryDisabled | Логический | Указывает, отправляется ли телеметрия на серверную часть. | Необязательный параметр. Значение по умолчанию — NO. |
| MAMTelemetryUsePPE | Логический | Отправляет данные телеметрии на серверную часть PPE. Полезно для тестирования приложений, чтобы данные не смешивались с данными клиентов. | Необязательный параметр. Значение по умолчанию — NO. |
| MaxFileProtectionLevel | String | Указывает максимальное NSFileProtectionType значение, поддерживаемое приложением. Переопределяет политику, если служба отправляет более высокий уровень.Возможные значения: NSFileProtectionComplete, NSFileProtectionCompleteUnlessOpen, NSFileProtectionCompleteUntilFirstUserAuthentication, NSFileProtectionNone.Примечание. С NSFileProtectionComplete, приложение теряет доступ к защищенным файлам через ~ 10 секунд после блокировки устройства, что может нарушить работу таких компонентов, как локальные базы данных. Приложения с пользовательским интерфейсом экрана блокировки должны использовать NSFileProtectionCompleteUntilFirstUserAuthentication. |
Необязательный параметр. Значение по умолчанию — NSFileProtectionComplete. |
| OpenInActionExtension | Логический | Установите значение "ДА" для расширений "Открыть в действии". Смотрите общий доступ к данным через UIActivityViewController. | Необязательный параметр. |
| TreatAllWebViews AsUnmanaged | Логический | Рассматривает все веб-представления как неуправляемые для принудительного вырезания, копирования и вставки. См. раздел Отображение веб-содержимого. | Необязательный параметр. Значение по умолчанию — NO. |
| WebViewHandledURLSchemes | Массив строк | Схемы URL-адресов, обрабатываемые веб-представлением приложения. | Обязательно, если веб-представление обрабатывает ссылки или навигацию на JavaScript. |
| DocumentBrowserFileCachePath | String | Если используется UIDocumentBrowserViewController, установите путь (относительно домашнего каталога приложения) к расшифрованным управляемым файлам. |
Необязательный параметр. Значение по умолчанию — /Documents/. |
| VerboseLoggingEnabled | Логический | Включает подробное ведение журнала. | Необязательный параметр. Значение по умолчанию — NO. |
| FinishLaunchingAtStartup | Логический | Обязательно при использовании [BGTaskScheduler registerForTaskWithIdentifier:]; должен быть присвоен значение YES. |
Необязательный параметр. Значение по умолчанию — NO. |
| ValuesToScrubFromLogging | Массив строк | Значения конфигурации приложения, которые следует удалить из журналов. Также можно настроить с помощью valuesToScrubFromLogging кнопки на IntuneMAMSettings. |
Необязательный параметр. |
Получение политики защиты приложений
Обзор
Чтобы получить политику защиты приложений Intune, приложения должны инициировать запрос на регистрацию в службе Intune MAM. Приложения можно настроить в Центре администрирования Intune для получения политики защиты приложений с регистрацией устройства или без нее. Управление мобильными приложениями (MAM) позволяет Intune управлять приложениями без необходимости регистрации устройства в системе управления мобильными устройствами (MDM) Intune. В обоих случаях для получения политики требуется регистрация в службе Intune MAM.
Важно!
Пакет SDK для приложений Intune для iOS использует 256-битные ключи шифрования, если шифрование включено политиками защиты приложений. Для защищенного обмена данными все приложения должны иметь актуальную версию пакета SDK.
Приложения, которые уже используют ADAL или MSAL
Примечание.
аутентификация Azure AD Library (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 в enrolledAccountIdIntuneMAMEnrollmentManager. Используйте его для всех API пакета SDK MAM, которые приложение использует для этой зарегистрированной учетной записи.
Пример:
[[IntuneMAMEnrollmentManager instance] loginAndEnrollAccount:@"user@foo.com"];
Позвольте Intune обрабатывать проверку подлинности и регистрацию при запуске
Если вы хотите, чтобы пакет SDK Intune обрабатывал все проверки подлинности с помощью ADAL/MSAL и регистрации до завершения запуска приложения, а для приложения всегда требуются политики защиты приложений, вам не нужно использовать loginAndEnrollAccount API. Вы можете установить для следующих параметров значение YES в словаре 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 можно присвоить значение "ложь". В противном случае приложение может инициировать выборочную очистку пакета 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 объект со следующими сведениями:
- accountId (идентификатор объекта) учетной записи, связанной с запросом
- Удостоверение (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: Функции участия приложения.