Корпоративные приложения на iOS и Android требуют политик, которые нельзя реализовать через стандартные ограничения ОС. Если в организации уже развёрнуты Azure AD, Office 365 и Teams, Microsoft Intune — это де-факто стандарт EMM. Мы специализируемся на интеграции Intune SDK и MSAL в мобильные приложения, обеспечивая Conditional Access на уровне Azure AD и защиту данных через MAM. Однажды нам поступил проект для крупного банка: требовалось за две недели внедрить Intune MAM в существующее React Native приложение. Справились за 12 рабочих дней — и теперь расскажем, как избежать типичных ошибок.
Intune — де-факто стандарт EMM для Microsoft-ориентированных организаций. Если инфраструктура на Azure AD, Office 365, Teams — Intune логичный выбор: единая консоль, Conditional Access на уровне Azure AD, нативная интеграция с Defender for Endpoint. Для мобильного приложения интеграция означает поддержку MAM SDK или App Wrapping + корректную работу с MSAL для получения токенов с учётом compliance-статуса устройства.
Регистрация приложения в Azure AD
Первый шаг — App Registration в Azure Portal. Без корректной регистрации Intune не сможет применять политики к приложению.
Минимальный набор настроек:
- Создать App Registration в Azure AD.
- Добавить API Permissions:
DeviceManagementApps.ReadWrite.All,DeviceManagementConfiguration.ReadWrite.All(если приложение читает политики напрямую). - Добавить
IntuneMAMв Redirect URI:msauth.{bundle-id}://auth. - Включить
Public client flowsдля мобильных клиентов. - В Intune Portal (portal.azure.com → Intune → Client Apps) добавить приложение в App Protection Policy и назначить на группы.
Как работает Conditional Access с MSAL?
MSAL (Microsoft Authentication Library) — замена ADAL, обязательный компонент для современной Intune-интеграции. Conditional Access работает автоматически: если устройство non-compliant (устаревшая OS, jailbreak по оценке Intune), MSAL получает MSALError с кодом conditionalAccessClaim — приложение должно повторно запросить токен с дополнительными claims. MSAL v1.1+ обрабатывает CA challenge автоматически при корректной конфигурации.
iOS (Swift):
import MSAL
let config = MSALPublicClientApplicationConfig(
clientId: "YOUR_CLIENT_ID",
redirectUri: "msauth.com.company.app://auth",
authority: try MSALAADAuthority(url: URL(string: "https://login.microsoftonline.com/YOUR_TENANT_ID")!)
)
config.bypassRedirectURIValidation = false
let application = try MSALPublicClientApplication(configuration: config)
let webParameters = MSALWebviewParameters(authPresentationViewController: viewController)
let interactiveParameters = MSALInteractiveTokenParameters(
scopes: ["https://graph.microsoft.com/.default"],
webviewParameters: webParameters
)
application.acquireToken(with: interactiveParameters) { result, error in
if let result = result {
// result.accessToken — использовать для API-запросов
// result.account — сохранить для silent token refresh
}
}
Intune MAM SDK: ключевые точки интеграции
После добавления IntuneMAMSwift (iOS) или intune-mam-sdk (Android) — несколько обязательных точек:
Регистрация аккаунта после авторизации:
// После успешного MSAL login
IntuneMAMEnrollmentManager.instance().loginAndEnrollAccount(userPrincipalName)
// SDK регистрирует UPN в MAM-сервисе и запрашивает политики
Обработка enrollment callback:
class MAMEnrollmentDelegate: NSObject, IntuneMAMEnrollmentDelegate {
func enrollmentRequestWithStatus(_ status: IntuneMAMEnrollmentStatus) {
switch status.statusCode {
case .enrollmentSuccess:
// Политики применены, разрешаем доступ к корпоративным функциям
case .enrollmentFailed:
// Показываем ошибку, ограничиваем доступ
case .unenrollmentSuccess:
// Selective wipe завершён
}
}
}
Проверка политики перед действием:
let policyManager = IntuneMAMPolicyManager.instance()
if policyManager.policy(forIdentity: userUPN).isSaveToPersonalAllowed(for: .camera) {
// Разрешить сохранение в Camera Roll
} else {
showRestrictedActionAlert()
}
Что даёт Managed App Configuration?
В Intune Portal для каждого приложения можно задать Configuration Policy — словарь ключей/значений, который приложение читает через UserDefaults.standard.dictionary(forKey: "com.apple.configuration.managed") (iOS) или RestrictionsManager (Android). Это позволяет IT-администратору изменять параметры (например, URL бэкенда или таймаут сессии) без обновления приложения.
Типичные параметры для корпоративного приложения:
<!-- App Configuration Policy в Intune Portal (XML формат) -->
<dict>
<key>BackendURL</key>
<string>https://api.corp.example.com</string>
<key>TenantID</key>
<string>corp-tenant-001</string>
<key>EnableVerboseLogging</key>
<false/>
<key>SessionTimeoutMinutes</key>
<integer>30</integer>
</dict>
Интеграция с Microsoft Defender for Endpoint
Если в организации используется Defender for Endpoint (MDE), Intune может получать от него сигналы о mobile threat defense: джейлбрейк, вредоносные сети, уязвимые приложения. Conditional Access использует эти сигналы для блокировки токенов. Для этого в приложение встраивается Defender SDK — он работает фоном, отправляет threat events в MDE, Intune получает compliance status. С точки зрения приложения — это отдельная зависимость, но без изменений в основной бизнес-логике.
Сравнение подходов: MAM SDK против App Wrapping
| Параметр | MAM SDK | App Wrapping |
|---|---|---|
| Изменение кода | Требуется | Не требуется |
| Гибкость управления | Высокая (финальный контроль) | Средняя (ограниченные политики) |
| Скорость внедрения | 3–5 недель | 1 неделя |
| Платформы | iOS, Android, React Native, Flutter | Только iOS и Android |
MAM SDK даёт полный контроль над корпоративными данными без необходимости использовать App Wrapping — это в 3 раза быстрее с точки зрения настройки политик и не требует изменения кода сторонних модулей.
Что входит в нашу работу
Мы обеспечиваем полный цикл интеграции:
- Аудит текущего приложения и конфигурации Azure AD.
- Регистрация приложения в Azure AD и настройка необходимых разрешений.
- Интеграция MSAL с поддержкой Conditional Access.
- Встраивание Intune MAM SDK (iOS/Android/React Native/Flutter).
- Реализация enrollment lifecycle и selective wipe.
- Настройка Managed App Configuration и App Protection Policy.
- Тестирование всех сценариев: Conditional Access, защита переноса файлов, блокировка на non-compliant устройствах.
- Документация для IT-отдела и обучение администраторов.
- Поддержка на этапе релиза в App Store и Google Play.
Свяжитесь с нами для оценки вашего проекта — мы подготовим коммерческое предложение в течение дня. Закажите интеграцию под ключ — сроки от 3 до 8 недель в зависимости от сложности.
Наш опыт — 5 лет в enterprise мобильной разработке, более 20 успешных проектов с Intune, включая банки, ритейл и логистику. Гарантируем чистую интеграцию без конфликтов с existing-кодом и полную прохождение App Store Review.
Этапы интеграции
Azure AD App Registration → настройка MSAL → добавление Intune MAM SDK → реализация enrollment lifecycle → Managed App Configuration → App Protection Policy в Intune Portal → тестирование Conditional Access → тестирование selective wipe → rollout.
Сроки: интеграция MSAL + MAM SDK в готовое приложение — 3–5 недель. С настройкой Intune Portal, политик и тестированием — 6–8 недель. Стоимость рассчитывается индивидуально.
Подробнее об Intune SDK читайте в официальной документации Microsoft, а о MSAL — в MSAL для iOS.







