Этап 3. Интеграция пакета SDK Intune с приложением iOS
Примечание.
Это руководство разделено на несколько отдельных этапов. Для начала ознакомьтесь с разделом Планирование интеграции.
Цели этапа
- Скачайте пакет SDK для приложений Intune.
- Узнайте, какие файлы включены в пакет SDK для приложений Intune.
- Ссылка на пакет SDK для приложений Intune в приложении.
- Убедитесь, что пакет SDK для приложений Intune правильно включен в сборку.
- Регистрация новых учетных записей для управления MAM после проверки подлинности с помощью MSAL.
- Чтобы удалить корпоративные данные, отмените регистрацию учетных записей при выходе из системы.
- (Рекомендуется) Включите вход MAM в приложение.
Предварительные условия
Вам нужен компьютер macOS, на котором установлен Xcode 14.0 или более поздней версии.
Приложение должно быть предназначено для iOS 14.0 или более поздней версии.
Ознакомьтесь с пакетом SDK для приложений Intune для условий лицензионного соглашения для 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-заглушки пакета 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
в существующие группы доступа.Если вы редактируете файл прав напрямую, а не используете приведенный выше пользовательский интерфейс 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
smart-ns
microsoft-edge-https-intunemam
microsoft-edge-http-intunemam
,zips
,lacoonsecurity
,wandera
,skycure
lookoutwork-ase
smsec
mvisionmobile
betteractiveshield
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.
Параметры сборки Xcode
Для приложения для параметра Strip Swift Symbols(STRIP_SWIFT_SYMBOLS) и для параметра Enable Bitcode(ENABLE_BITCODE) должно быть задано значение НЕТ.
Интеграция расширения поставщика файлов
Расширения поставщика файлов имеют определенные требования к памяти, которые могут затруднить интеграцию полного пакета SDK. Чтобы упростить это, есть статическая библиотека libIntuneMAMSwiftFileProvider.xcframework
, которая является урезаной версией пакета SDK специально для расширений поставщика файлов. Обратите внимание, что это касается части расширения FileProvider, отличной от пользовательского интерфейса. Вам потребуется интегрировать полный пакет SDK в расширение пользовательского интерфейса поставщика файлов.
Чтобы интегрировать одну из этих библиотек с расширением поставщика файлов, выполните действия по интеграции пакета SDK в качестве статической библиотеки, как показано выше. Обязательно включите ContainingAppBundleId
параметр.
Интеграция расширения поставщика нереплицированных файлов
Приложение использует нереплицированный поставщик файлов, если оно реализует протокол NSFileProviderExtension. Все поставщики файлов, созданные до iOS 16.0, не реплицируются.
В — startProvidingItemAtURL:completionHandler: проверьте, следует ли шифровать файлы с помощью [[экземпляр IntuneMAMPolicy]shouldFileProviderEncryptFiles]]. Используйте API encryptFile:forAccountId: в IntuneMAMFileProtectionManager для фактического шифрования файлов. Кроме того, вы можете предоставить общий доступ к копии файла, когда требуется шифрование, так как вы не хотите хранить зашифрованную копию файла в облачном хранилище.
В — 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 значение YES. |
Необязательный параметр. Значение по умолчанию — нет. |
MAMPolicyRequired | Логический | Указывает, будет ли заблокирован запуск приложения, если у него нет политики защиты приложений Intune. Значение по умолчанию — NO. Примечания. Приложения не могут отправляться в App Store, если параметрУ MAMPolicyRequired присвоено значение ДА. Если для параметра MAMPolicyRequired задано значение ДА, для параметра AutoEnrollOnLaunch также должно быть задано значение ДА. |
Необязательный параметр. Значение по умолчанию — нет. |
MAMPolicyWarnAbsent | Логический | Указывает, будет ли приложение предупреждать пользователя во время запуска, если в приложении нет политики защиты приложений Intune. Примечание. После закрытия предупреждения пользователям по-прежнему будет разрешено использовать приложение без политики. |
Необязательный параметр. Значение по умолчанию — нет. |
MultiIdentity | Логический | Указывает, поддерживает ли приложение несколько удостоверений. | Необязательный параметр. Значение по умолчанию — нет. |
SafariViewControllerBlockedOverride | Логический | Отключает перехватчики SafariViewController в Intune, чтобы включить проверку подлинности MSAL через SFSafariViewController, SFAuthSession или ASWebAuthSession. Примечание. Свойство кнопки действия SFSafariViewControllerConfiguration не поддерживается управляемым контроллером представления Safari Intune. Кнопка настроенного действия будет отображаться в SafariViewController только в том случае, если представление неуправляемое, а для параметра SafariViewControllerBlockedOverride задано значение Да. |
Необязательный параметр. Значение по умолчанию — нет. ВНИМАНИЕ! При неправильном использовании может привести к утечке данных. Включите, только если это абсолютно необходимо. Дополнительные сведения см. в статье Особые рекомендации при использовании MSAL для проверки подлинности, инициированной приложением. |
SplashIconFile SplashIconFile~ipad |
String | Указывает файл значка заставки (запуска) Intune. | Необязательный параметр. |
SplashDuration | Номер | Минимальное время (в секундах) для отображения экрана запуска Intune при запуске приложения. Значение по умолчанию — 1.5. | Необязательный параметр. |
BackgroundColor | String | Задает цвет фона для компонентов пользовательского интерфейса пакета SDK для Intune. Принимает шестнадцатеричную rgb-строку в виде #XXXXXX, где X может варьироваться от 0 до 9 или A–F. Знак фунта может быть опущен. | Необязательный параметр. По умолчанию используется системный цвет фона, который может отличаться в разных версиях iOS и в зависимости от параметра темного режима iOS. |
ForegroundColor | String | Задает цвет переднего плана для компонентов пользовательского интерфейса пакета SDK для Intune, таких как цвет текста. Принимает шестнадцатеричную rgb-строку в виде #XXXXXX, где X может варьироваться от 0 до 9 или A–F. Знак фунта может быть опущен. | Необязательный параметр. По умолчанию используется цвет системной метки, который может отличаться в разных версиях iOS и в соответствии с параметром темного режима iOS. |
AccentColor | String | Задает цвет акцента для компонентов пользовательского интерфейса пакета SDK для Intune, таких как цвет текста кнопки и цвет выделения поля ПИН-кода. Принимает шестнадцатеричную rgb-строку в виде #XXXXXX, где X может варьироваться от 0 до 9 или A–F. Знак фунта может быть опущен. | Необязательный параметр. По умолчанию — системный синий. |
SecondaryBackgroundColor | String | Указывает дополнительный цвет фона для экранов MTD. Принимает шестнадцатеричную rgb-строку в виде #XXXXXX, где X может варьироваться от 0 до 9 или A–F. Знак фунта может быть опущен. | Необязательный параметр. По умолчанию — белый. |
SecondaryForegroundColor | String | Задает дополнительный цвет переднего плана для экранов MTD, например цвет сноски. Принимает шестнадцатеричную rgb-строку в виде #XXXXXX, где X может варьироваться от 0 до 9 или A–F. Знак фунта может быть опущен. | Необязательный параметр. Значение по умолчанию — серый. |
SupportsDarkMode | Логический | Указывает, должна ли цветовая схема пользовательского интерфейса пакета SDK для Intune соблюдать системный параметр темного режима, если явное значение BackgroundColor/ForegroundColor/AccentColor не задано. | Необязательный параметр. По умолчанию — да. |
MAMTelemetryDisabled | Логический | Указывает, не будет ли пакет SDK отправлять данные телеметрии в свою часть. | Необязательный параметр. Значение по умолчанию — нет. |
MAMTelemetryUsePPE | Логический | Указывает, будет ли пакет SDK MAM отправлять данные в серверную часть телеметрии PPE. Используйте его при тестировании приложений с помощью политики Intune, чтобы тестовые данные телеметрии не смешивались с данными клиентов. | Необязательный параметр. Значение по умолчанию — нет. |
MaxFileProtectionLevel | String | Позволяет приложению указать максимальное значение NSFileProtectionType , которое оно может поддерживать. Это значение переопределит политику, отправленную службой, если уровень выше, чем может поддерживать приложение. Возможные значения: NSFileProtectionComplete , NSFileProtectionCompleteUnlessOpen , NSFileProtectionCompleteUntilFirstUserAuthentication , NSFileProtectionNone . Примечание. При наивысшем уровне защиты файлов (NSFileProtectionComplete ) защищенные файлы можно получить только во время разблокировки устройства. Через 10 секунд после блокировки устройства приложение потеряет доступ к защищенным файлам. В некоторых случаях это может привести к потере доступа к внутренним компонентам (таким как базы данных MySQL), что приводит к непредвиденному поведению. Рекомендуется, чтобы приложения, которые представляют элементы пользовательского интерфейса экрана блокировки, присвоили этому значению NSFileProtectionCompleteUntilFirstUserAuthentication значение . |
Необязательный параметр. Значение по умолчанию — NSFileProtectionComplete . |
OpenInActionExtension | Логический | Для расширения Открыть в действии задайте значение ДА. Дополнительные сведения см. в разделе Общий доступ к данным через UIActivityViewController . | |
WebViewHandledURLSchemes | Массив строк | Указывает схемы URL-адресов, обрабатываемые приложением WebView. | Требуется, если приложение использует WebView, обрабатывающий URL-адреса с помощью ссылок и (или) JavaScript. |
DocumentBrowserFileCachePath | String | Если приложение использует UIDocumentBrowserViewController для просмотра файлов в разных поставщиках файлов, этот путь можно задать относительно домашнего каталога в песочнице приложения, чтобы пакет SDK Для Intune смог удалить расшифрованные управляемые файлы в эту папку. |
Необязательный параметр. По умолчанию используется /Documents/ каталог. |
VerboseLoggingEnabled | Логический | Если задано значение ДА, Intune будет выполнять вход в подробном режиме. | Необязательный параметр. По умолчанию используется значение 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) и API Azure AD Graph будут устарели. Подробности см. в статье Обновление приложений, чтобы использовать библиотеку проверки подлинности Майкрософт (MSAL) и API Microsoft Graph
Приложения, которые уже используют MSAL, должны вызывать registerAndEnrollAccountId
метод в экземпляре IntuneMAMEnrollmentManager
после успешной проверки подлинности пользователя:
/*
* This method will add the account to the list of registered accounts.
* An enrollment request will immediately be started.
* @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, но по-прежнему необходимо получить политику защиты приложений для защиты данных. Например, если для входа в приложение используется другая служба проверки подлинности или приложение вообще не поддерживает вход. Для этого приложение может вызвать метод в loginAndEnrollAccount
экземпляре IntuneMAMEnrollmentManager
:
/**
* Creates an enrollment request which is started immediately.
* If no token can be retrieved for the identity, the user will be prompted
* to enter their credentials, after which enrollment will be 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 уведомит пользователя о необходимости перезапуска приложения.
После управления приложением необходимо запросить значение идентификатора объекта Entra с помощью enrolledAccountId
в IntuneMAMEnrollmentManager
. Используйте его для всех API-интерфейсов пакета SDK для MAM, которые приложение использует для этой зарегистрированной учетной записи.
Пример:
[[IntuneMAMEnrollmentManager instance] loginAndEnrollAccount:@"[email protected]"];
Разрешить 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 will remove the provided account from the list of
* registered accounts. Once removed, if the account has enrolled
* the application, the account will be un-enrolled.
* @note In the case where an un-enroll is required, this method will block
* until the Intune APP AAD token is acquired, then return. 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 сразу же отображается диалоговое окно с сообщением о необходимости перезапуска приложения.
Условия выхода
После настройки подключаемого модуля сборки или интеграции средства командной строки в процесс сборки убедитесь, что он успешно работает:
- Убедитесь, что сборка успешно компилируется и выполняет сборку.
- Запустите скомпилированное приложение, войдите в систему с пользователем Microsoft Entra, который не предназначен для политики защиты приложений, и убедитесь, что приложение работает должным образом.
- Выйдите и повторите этот тест с пользователем Microsoft Entra, который предназначен для политики защиты приложений , и убедитесь, что приложение теперь управляется Intune и перезапущено.
На этом этапе интеграции приложение теперь может получать и применять политику защиты приложений. Выполните следующие тесты, чтобы проверить интеграцию.
Первый тест приложения политики
Сначала выполните следующий тест, чтобы ознакомиться с полным взаимодействием с конечным пользователем приложения политики в приложении:
- Создайте политику защиты приложений iOS в Центре администрирования Microsoft Intune. Для этого теста настройте политику:
- В разделе Требования к доступу оставьте параметры по умолчанию. В частности, "ПИН-код для доступа" должен иметь значение "Требовать".
- Убедитесь, что политика защиты приложений ориентирована на ваше приложение. Может потребоваться вручную добавить идентификатор пакета приложения в мастер создания политик.
- Назначьте политику защиты приложений группе пользователей, содержащей тестовую учетную запись.
- Установите приложение.
- Войдите в приложение с помощью тестовой учетной записи, предназначенной для политики защиты приложений.
- Убедитесь, что вам будет предложено использовать управляемый экран Intune, и подтвердите, что запрос перезапустит приложение. На этом экране указано, что пакет SDK успешно извлекает политику для этой учетной записи.
- Создайте ПИН-код, когда вам будет предложено задать ПИН-код приложения.
- Выйдите из приложения под управлением управляемой учетной записи.
- Перейдите по приложению и убедитесь, что приложение работает должным образом, если это возможно, без входа в систему.
Этот список шагов представляет собой *минимальный тест, чтобы убедиться, что приложение правильно регистрирует учетную запись, регистрирует обратный вызов проверки подлинности и отменяет регистрацию учетной записи. Выполните следующие тесты, чтобы более тщательно проверить, как другие параметры политики защиты приложений изменяют поведение приложения.
Дальнейшие действия
После выполнения всех условий выхода перейдите к этапу 4. Функции участия в приложениях.